@operato/form 1.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/.editorconfig +29 -0
  2. package/.storybook/main.js +3 -0
  3. package/.storybook/server.mjs +8 -0
  4. package/CHANGELOG.md +11 -0
  5. package/LICENSE +21 -0
  6. package/README.md +75 -0
  7. package/demo/index.html +33 -0
  8. package/dist/src/components/ox-custom-input.d.ts +23 -0
  9. package/dist/src/components/ox-custom-input.js +114 -0
  10. package/dist/src/components/ox-custom-input.js.map +1 -0
  11. package/dist/src/components/ox-custom-select.d.ts +21 -0
  12. package/dist/src/components/ox-custom-select.js +100 -0
  13. package/dist/src/components/ox-custom-select.js.map +1 -0
  14. package/dist/src/components/ox-file-uploader.d.ts +13 -0
  15. package/dist/src/components/ox-file-uploader.js +166 -0
  16. package/dist/src/components/ox-file-uploader.js.map +1 -0
  17. package/dist/src/components/ox-form-master.d.ts +1 -0
  18. package/dist/src/components/ox-form-master.js +208 -0
  19. package/dist/src/components/ox-form-master.js.map +1 -0
  20. package/dist/src/components/ox-form-paginator.d.ts +9 -0
  21. package/dist/src/components/ox-form-paginator.js +70 -0
  22. package/dist/src/components/ox-form-paginator.js.map +1 -0
  23. package/dist/src/components/ox-search-form-paginator.d.ts +1 -0
  24. package/dist/src/components/ox-search-form-paginator.js +51 -0
  25. package/dist/src/components/ox-search-form-paginator.js.map +1 -0
  26. package/dist/src/components/ox-search-form.d.ts +56 -0
  27. package/dist/src/components/ox-search-form.js +284 -0
  28. package/dist/src/components/ox-search-form.js.map +1 -0
  29. package/dist/src/index.d.ts +3 -0
  30. package/dist/src/index.js +4 -0
  31. package/dist/src/index.js.map +1 -0
  32. package/dist/src/styles/index.d.ts +3 -0
  33. package/dist/src/styles/index.js +4 -0
  34. package/dist/src/styles/index.js.map +1 -0
  35. package/dist/src/styles/multi-column-form-styles.d.ts +1 -0
  36. package/dist/src/styles/multi-column-form-styles.js +192 -0
  37. package/dist/src/styles/multi-column-form-styles.js.map +1 -0
  38. package/dist/src/styles/search-form-styles.d.ts +1 -0
  39. package/dist/src/styles/search-form-styles.js +156 -0
  40. package/dist/src/styles/search-form-styles.js.map +1 -0
  41. package/dist/src/styles/single-column-form-styles.d.ts +1 -0
  42. package/dist/src/styles/single-column-form-styles.js +114 -0
  43. package/dist/src/styles/single-column-form-styles.js.map +1 -0
  44. package/dist/tsconfig.tsbuildinfo +1 -0
  45. package/package.json +77 -0
  46. package/src/components/ox-custom-input.ts +102 -0
  47. package/src/components/ox-custom-select.ts +90 -0
  48. package/src/components/ox-file-uploader.ts +163 -0
  49. package/src/components/ox-form-master.ts +241 -0
  50. package/src/components/ox-form-paginator.ts +60 -0
  51. package/src/components/ox-search-form-paginator.ts +46 -0
  52. package/src/components/ox-search-form.ts +317 -0
  53. package/src/index.ts +3 -0
  54. package/src/styles/index.ts +3 -0
  55. package/src/styles/multi-column-form-styles.ts +192 -0
  56. package/src/styles/search-form-styles.ts +156 -0
  57. package/src/styles/single-column-form-styles.ts +114 -0
  58. package/src/themes/form-theme.css +75 -0
  59. package/tsconfig.json +23 -0
  60. package/web-dev-server.config.mjs +27 -0
  61. package/web-test-runner.config.mjs +41 -0
@@ -0,0 +1,114 @@
1
+ import { css } from 'lit'
2
+
3
+ export const SingleColumnFormStyles = css`
4
+ :host {
5
+ overflow: auto;
6
+ padding: var(--form-container-padding);
7
+ }
8
+
9
+ .single-column-form {
10
+ width: 100%;
11
+ display: grid;
12
+ grid-template-columns: repeat(12, 1fr);
13
+ grid-gap: var(--form-grid-gap);
14
+ grid-auto-rows: minmax(24px, auto);
15
+ max-width: var(--form-max-width);
16
+ margin: var(--form-margin);
17
+ }
18
+ .single-column-form fieldset {
19
+ display: contents;
20
+ }
21
+ .single-column-form legend {
22
+ grid-column: span 12;
23
+ text-transform: capitalize;
24
+
25
+ padding: var(--legend-padding);
26
+ font: var(--legend-font);
27
+ color: var(--legend-text-color);
28
+ border-bottom: var(--legend-border-bottom);
29
+ }
30
+
31
+ .single-column-form label {
32
+ grid-column: span 3;
33
+ text-align: right;
34
+ text-transform: capitalize;
35
+
36
+ color: var(--label-color);
37
+ font: var(--label-font);
38
+ }
39
+
40
+ .single-column-form input,
41
+ .single-column-form table,
42
+ .single-column-form select,
43
+ .single-column-form textarea,
44
+ .single-column-form [custom-input] {
45
+ grid-column: span 8;
46
+
47
+ border: var(--input-field-border);
48
+ border-radius: var(--input-field-border-radius);
49
+ padding: var(--input-field-padding);
50
+ font: var(--input-field-font);
51
+ }
52
+
53
+ .single-column-form input[type='checkbox'],
54
+ .single-column-form input[type='radio'] {
55
+ justify-self: end;
56
+ align-self: start;
57
+ grid-column: span 3 / auto;
58
+ position: relative;
59
+ left: 17px;
60
+ }
61
+
62
+ .single-column-form input[type='checkbox'] + label,
63
+ .single-column-form input[type='radio'] + label {
64
+ padding-left: 17px;
65
+ text-align: left;
66
+ grid-column: span 9 / auto;
67
+
68
+ font: var(--form-sublabel-font);
69
+ color: var(--form-sublabel-color);
70
+ }
71
+
72
+ input:focus {
73
+ outline: none;
74
+ border: 1px solid var(--focus-background-color);
75
+ }
76
+ input[type='checkbox'] {
77
+ margin: 0;
78
+ }
79
+
80
+ @media screen and (max-width: 460px) {
81
+ .single-column-form {
82
+ max-width: 90%;
83
+ grid-gap: 5px;
84
+ }
85
+ .single-column-form label {
86
+ grid-column: span 12;
87
+ text-align: left;
88
+ align-self: end;
89
+ }
90
+ .single-column-form input,
91
+ .single-column-form table,
92
+ .single-column-form select,
93
+ .single-column-form textarea,
94
+ .single-column-form [custom-input] {
95
+ grid-column: span 12;
96
+
97
+ padding: var(--padding-default);
98
+ font: normal 15px var(--theme-font);
99
+ }
100
+ .single-column-form input[type='checkbox'],
101
+ .single-column-form input[type='radio'] {
102
+ justify-self: start;
103
+ align-self: center;
104
+ grid-column: span 1 / auto;
105
+ zoom: 1.4;
106
+ }
107
+
108
+ .single-column-form input[type='checkbox'] + label,
109
+ .single-column-form input[type='radio'] + label {
110
+ grid-column: span 11 / auto;
111
+ align-self: center;
112
+ }
113
+ }
114
+ `
@@ -0,0 +1,75 @@
1
+ body {
2
+ --form-border: none;
3
+ --form-margin: var(--margin-wide);
4
+ --form-max-width: 700px;
5
+ --form-multi-column-max-width: 100%;
6
+ --form-sublabel-font: normal 13px var(--theme-font);
7
+ --form-sublabel-color: var(--secondary-color);
8
+ --form-grid-gap: 12px 5px;
9
+
10
+ --legend-padding: var(--padding-default) 0;
11
+ --legend-font: bold 16px var(--theme-font);
12
+ --legend-text-color: var(--secondary-text-color);
13
+ --legend-border-bottom: 1px solid var(--primary-color);
14
+
15
+ --label-padding: 3px 0;
16
+ --label-font: normal 14px var(--theme-font);
17
+ --label-color: var(--secondary-color);
18
+
19
+ --input-field-border: 1px solid rgba(0, 0, 0, 0.2);
20
+ --input-field-border-radius: var(--border-radius);
21
+ --input-field-padding: 2px 9px;
22
+ --input-field-font: normal 14px var(--theme-font);
23
+
24
+ --search-panel-background-color: rgba(0, 0, 0, 0.1);
25
+ --search-panel-search-iconbutton-size: var(--icon-default-size);
26
+ --search-form-icon-color: var(--primary-color);
27
+ --search-form-box-shadow: 0 2px 3px 1px rgba(0, 0, 0, 0.15);
28
+ --search-form-box-padding: 15px 30px 15px 15px;
29
+ --search-form-background-color: #fff;
30
+ --search-form-narrow-background-color: var(--primary-color);
31
+ --search-form-narrow-text-color: #fff;
32
+
33
+ --file-uploader-border: 1px solid rgba(0, 0, 0, 0.1);
34
+ --file-uploader-background-color: var(--main-section-background-color);
35
+ --file-uploader-font: normal 12px/20px var(--theme-font);
36
+ --file-uploader-color: var(--secondary-color);
37
+ --file-uploader-icon-color: var(--primary-color);
38
+ --file-uploader-candrop-background-color: #fffde9;
39
+ --file-uploader-label-padding: 3px 20px;
40
+ --file-uploader-label-border-radius: var(--border-radius);
41
+ --file-uploader-label-background-color: var(--secondary-color);
42
+ --file-uploader-label-font: normal 12px var(--theme-font);
43
+ --file-uploader-label-color: #fff;
44
+ --file-uploader-li-padding: 2px 5px 0px 5px;
45
+ --file-uploader-li-border-bottom: 1px dotted rgba(0, 0, 0, 0.1);
46
+ --file-uploader-li-icon-margin: 2px 0 2px 5px;
47
+ --file-uploader-li-icon-font: normal 15px var(--mdc-icon-font, 'Material Icons');
48
+ --file-uploader-li-icon-focus-color: var(--primary-color);
49
+ }
50
+
51
+ @media screen and (max-width: 480px) {
52
+ body {
53
+ --label-font: normal 15px var(--theme-font);
54
+ }
55
+ }
56
+
57
+ @media (min-width: 481px) and (max-width: 1024px) {
58
+ body {
59
+ --form-margin: 15px 0;
60
+ --form-multi-column-max-width: 100%;
61
+ --form-container-padding: 0 9px 12px 9px;
62
+ --label-font: normal 14px var(--theme-font);
63
+ --input-field-font: normal 15px var(--theme-font);
64
+ --input-field-padding: 3px 5px;
65
+ }
66
+ }
67
+
68
+ @media only screen and (max-width: 925px) {
69
+ body {
70
+ --form-margin: 14px 0;
71
+ --form-multi-column-max-width: 100%;
72
+ --form-container-padding: 0 9px 12px 9px;
73
+ --input-field-padding: 3px 5px;
74
+ }
75
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es2018",
4
+ "module": "esnext",
5
+ "moduleResolution": "node",
6
+ "noEmitOnError": true,
7
+ "lib": ["es2017", "dom"],
8
+ "strict": true,
9
+ "esModuleInterop": false,
10
+ "allowSyntheticDefaultImports": true,
11
+ "experimentalDecorators": true,
12
+ "useDefineForClassFields": false,
13
+ "importHelpers": true,
14
+ "outDir": "dist",
15
+ "sourceMap": true,
16
+ "inlineSources": true,
17
+ "rootDir": "./",
18
+ "declaration": true,
19
+ "incremental": true,
20
+ "types": ["node", "mocha"]
21
+ },
22
+ "include": ["**/*.ts"]
23
+ }
@@ -0,0 +1,27 @@
1
+ // import { hmrPlugin, presets } from '@open-wc/dev-server-hmr';
2
+
3
+ /** Use Hot Module replacement by adding --hmr to the start command */
4
+ const hmr = process.argv.includes('--hmr');
5
+
6
+ export default /** @type {import('@web/dev-server').DevServerConfig} */ ({
7
+ open: '/demo/',
8
+ /** Use regular watch mode if HMR is not enabled. */
9
+ watch: !hmr,
10
+ /** Resolve bare module imports */
11
+ nodeResolve: {
12
+ exportConditions: ['browser', 'development'],
13
+ },
14
+
15
+ /** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */
16
+ // esbuildTarget: 'auto'
17
+
18
+ /** Set appIndex to enable SPA routing */
19
+ // appIndex: 'demo/index.html',
20
+
21
+ plugins: [
22
+ /** Use Hot Module Replacement by uncommenting. Requires @open-wc/dev-server-hmr plugin */
23
+ // hmr && hmrPlugin({ exclude: ['**/*/node_modules/**/*'], presets: [presets.litElement] }),
24
+ ],
25
+
26
+ // See documentation for all available options
27
+ });
@@ -0,0 +1,41 @@
1
+ // import { playwrightLauncher } from '@web/test-runner-playwright';
2
+
3
+ const filteredLogs = ['Running in dev mode', 'lit-html is in dev mode'];
4
+
5
+ export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({
6
+ /** Test files to run */
7
+ files: 'dist/test/**/*.test.js',
8
+
9
+ /** Resolve bare module imports */
10
+ nodeResolve: {
11
+ exportConditions: ['browser', 'development'],
12
+ },
13
+
14
+ /** Filter out lit dev mode logs */
15
+ filterBrowserLogs(log) {
16
+ for (const arg of log.args) {
17
+ if (typeof arg === 'string' && filteredLogs.some(l => arg.includes(l))) {
18
+ return false;
19
+ }
20
+ }
21
+ return true;
22
+ },
23
+
24
+ /** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */
25
+ // esbuildTarget: 'auto',
26
+
27
+ /** Amount of browsers to run concurrently */
28
+ // concurrentBrowsers: 2,
29
+
30
+ /** Amount of test files per browser to test concurrently */
31
+ // concurrency: 1,
32
+
33
+ /** Browsers to run tests on */
34
+ // browsers: [
35
+ // playwrightLauncher({ product: 'chromium' }),
36
+ // playwrightLauncher({ product: 'firefox' }),
37
+ // playwrightLauncher({ product: 'webkit' }),
38
+ // ],
39
+
40
+ // See documentation for all available options
41
+ });