core: common directory for packages (#114)
This commit is contained in:
parent
b96e3383dc
commit
4fd6f33fe9
13 changed files with 92 additions and 39 deletions
29
package-lock.json
generated
29
package-lock.json
generated
|
@ -13,7 +13,8 @@
|
|||
"packages/validator",
|
||||
"apps/demo",
|
||||
"apps/docs",
|
||||
"apps/landing-page"
|
||||
"apps/landing-page",
|
||||
"packages/common"
|
||||
]
|
||||
},
|
||||
"apps/demo": {
|
||||
|
@ -2821,6 +2822,10 @@
|
|||
"node": ">= 10"
|
||||
}
|
||||
},
|
||||
"node_modules/common": {
|
||||
"resolved": "packages/common",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/common-ancestor-path": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz",
|
||||
|
@ -10466,10 +10471,18 @@
|
|||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"packages/common": {
|
||||
"version": "0.0.0",
|
||||
"license": "MIT",
|
||||
"devDependencies": {}
|
||||
},
|
||||
"packages/form": {
|
||||
"name": "@astro-reactive/form",
|
||||
"version": "0.4.6",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"common": "file:packages/common"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/chai": "^4.3.3",
|
||||
"@types/eslint": "^8.4.6",
|
||||
|
@ -10493,6 +10506,11 @@
|
|||
"astro": "^1.5.0"
|
||||
}
|
||||
},
|
||||
"packages/form/node_modules/common": {
|
||||
"resolved": "packages/form/packages/common",
|
||||
"link": true
|
||||
},
|
||||
"packages/form/packages/common": {},
|
||||
"packages/validator": {
|
||||
"name": "@astro-reactive/validator",
|
||||
"version": "0.0.5",
|
||||
|
@ -10716,6 +10734,7 @@
|
|||
"astro": "^1.5.0",
|
||||
"astro-component-tester": "^0.6.0",
|
||||
"chai": "^4.3.6",
|
||||
"common": "file:packages/common",
|
||||
"eslint": "^8.23.1",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
|
@ -10723,6 +10742,11 @@
|
|||
"prettier": "^2.7.1",
|
||||
"prettier-plugin-astro": "^0.5.4",
|
||||
"typescript": "^4.8.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"common": {
|
||||
"version": "file:packages/form/packages/common"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@astro-reactive/validator": {
|
||||
|
@ -12640,6 +12664,9 @@
|
|||
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
|
||||
"dev": true
|
||||
},
|
||||
"common": {
|
||||
"version": "file:packages/common"
|
||||
},
|
||||
"common-ancestor-path": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz",
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
"packages/validator",
|
||||
"apps/demo",
|
||||
"apps/docs",
|
||||
"apps/landing-page"
|
||||
"apps/landing-page",
|
||||
"packages/common"
|
||||
]
|
||||
}
|
||||
|
|
20
packages/common/package.json
Normal file
20
packages/common/package.json
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"name": "common",
|
||||
"version": "0.0.0",
|
||||
"description": "Common code for Astro Reactive Packages",
|
||||
"main": "index.js",
|
||||
"devDependencies": {},
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/ayoayco/astro-reactive-library.git"
|
||||
},
|
||||
"author": "Ayo Ayco",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/ayoayco/astro-reactive-library/issues"
|
||||
},
|
||||
"homepage": "https://github.com/ayoayco/astro-reactive-library#readme"
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* ControlType - determines the type of form control
|
||||
* `ControlType` determines the type of form control
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#input_types
|
||||
*/
|
||||
export type ControlType =
|
1
packages/common/types/index.ts
Normal file
1
packages/common/types/index.ts
Normal file
|
@ -0,0 +1 @@
|
|||
export * from "./control.types";
|
|
@ -1,4 +1,4 @@
|
|||
/** @type {import("@types/eslint").Linter.Config} */
|
||||
module.exports = {
|
||||
extends: '../configs/.eslintrc.cjs',
|
||||
extends: '../common/configs/.eslintrc.cjs',
|
||||
};
|
||||
|
|
|
@ -20,38 +20,40 @@ const formName = Array.isArray(form) ? null : form?.name || null;
|
|||
{
|
||||
Array.isArray(form)
|
||||
? form?.map((group) => <FieldSet showValidationHints={showValidationHints} group={group} />)
|
||||
: form?.controls.map((control) => (
|
||||
control.type === "radio" ?
|
||||
(
|
||||
[
|
||||
(<Field showValidationHints={showValidationHints} control={control} showOnlyLabel={true} />),
|
||||
...(control as Radio)?.value?.map((v: string | RadioOption) => (
|
||||
: form?.controls.map((control) =>
|
||||
control.type === 'radio' ? (
|
||||
[
|
||||
<Field
|
||||
showValidationHints={showValidationHints}
|
||||
control={
|
||||
(typeof v === "string") ?
|
||||
new FormControl({
|
||||
name: control.name,
|
||||
type: "radio",
|
||||
id: control.name + v,
|
||||
label: v,
|
||||
value: v
|
||||
}) :
|
||||
new FormControl({
|
||||
name: control.name,
|
||||
type: "radio",
|
||||
id: control.name + v.label,
|
||||
...(v as RadioOption)
|
||||
})
|
||||
}
|
||||
/>
|
||||
))
|
||||
]
|
||||
) :
|
||||
(
|
||||
<Field showValidationHints={showValidationHints} control={control} />
|
||||
)
|
||||
))
|
||||
showValidationHints={showValidationHints}
|
||||
control={control}
|
||||
showOnlyLabel={true}
|
||||
/>,
|
||||
...(control as Radio)?.value?.map((v: string | RadioOption) => (
|
||||
<Field
|
||||
showValidationHints={showValidationHints}
|
||||
control={
|
||||
typeof v === 'string'
|
||||
? new FormControl({
|
||||
name: control.name,
|
||||
type: 'radio',
|
||||
id: control.name + v,
|
||||
label: v,
|
||||
value: v,
|
||||
})
|
||||
: new FormControl({
|
||||
name: control.name,
|
||||
type: 'radio',
|
||||
id: control.name + v.label,
|
||||
...(v as RadioOption),
|
||||
})
|
||||
}
|
||||
/>
|
||||
)),
|
||||
]
|
||||
) : (
|
||||
<Field showValidationHints={showValidationHints} control={control} />
|
||||
)
|
||||
)
|
||||
}
|
||||
{
|
||||
submitControl && (
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import type { ControlConfig, ControlType, RadioOption } from './form-control-types';
|
||||
import type { ControlConfig, ControlType, RadioOption } from 'common/types';
|
||||
|
||||
export class FormControl {
|
||||
private _name = '';
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import type { ControlConfig } from './form-control-types';
|
||||
import type { ControlConfig } from 'common/types';
|
||||
import { FormControl } from './form-control';
|
||||
|
||||
export class FormGroup {
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
export * from './form-control';
|
||||
export * from './form-group';
|
||||
export * from './form-control-types';
|
||||
|
|
|
@ -54,5 +54,8 @@
|
|||
"peerDependencies": {
|
||||
"astro": "^1.5.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"common": "file:packages/common"
|
||||
},
|
||||
"license": "MIT"
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/** @type {import("@types/eslint").Linter.Config} */
|
||||
module.exports = {
|
||||
extends: '../configs/.eslintrc.cjs',
|
||||
extends: '../common/configs/.eslintrc.cjs',
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue