@scouterna/ui-webc 1.0.0 → 2.0.0

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 (43) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/scout-checkbox.cjs.entry.js +53 -0
  3. package/dist/cjs/scout-checkbox.entry.cjs.js.map +1 -0
  4. package/dist/cjs/scout-field.cjs.entry.js +1 -1
  5. package/dist/cjs/scout-switch.cjs.entry.js +49 -0
  6. package/dist/cjs/scout-switch.entry.cjs.js.map +1 -0
  7. package/dist/cjs/ui-webc.cjs.js +1 -1
  8. package/dist/collection/collection-manifest.json +3 -1
  9. package/dist/collection/components/checkbox/checkbox.css +81 -0
  10. package/dist/collection/components/checkbox/checkbox.js +176 -0
  11. package/dist/collection/components/checkbox/checkbox.js.map +1 -0
  12. package/dist/collection/components/field/field.js +1 -1
  13. package/dist/collection/components/switch/switch.css +79 -0
  14. package/dist/collection/components/switch/switch.js +173 -0
  15. package/dist/collection/components/switch/switch.js.map +1 -0
  16. package/dist/components/scout-checkbox.d.ts +11 -0
  17. package/dist/components/scout-checkbox.js +78 -0
  18. package/dist/components/scout-checkbox.js.map +1 -0
  19. package/dist/components/scout-field.js +1 -1
  20. package/dist/components/scout-switch.d.ts +11 -0
  21. package/dist/components/scout-switch.js +75 -0
  22. package/dist/components/scout-switch.js.map +1 -0
  23. package/dist/custom-elements.json +317 -1
  24. package/dist/esm/loader.js +1 -1
  25. package/dist/esm/scout-checkbox.entry.js +51 -0
  26. package/dist/esm/scout-checkbox.entry.js.map +1 -0
  27. package/dist/esm/scout-field.entry.js +1 -1
  28. package/dist/esm/scout-switch.entry.js +47 -0
  29. package/dist/esm/scout-switch.entry.js.map +1 -0
  30. package/dist/esm/ui-webc.js +1 -1
  31. package/dist/types/components/checkbox/checkbox.d.ts +22 -0
  32. package/dist/types/components/switch/switch.d.ts +25 -0
  33. package/dist/types/components.d.ts +134 -0
  34. package/dist/ui-webc/p-24632b65.entry.js +2 -0
  35. package/dist/ui-webc/p-24632b65.entry.js.map +1 -0
  36. package/dist/ui-webc/p-2b434594.entry.js +2 -0
  37. package/dist/ui-webc/p-2b434594.entry.js.map +1 -0
  38. package/dist/ui-webc/{p-fb926c68.entry.js → p-7245a55a.entry.js} +2 -2
  39. package/dist/ui-webc/scout-checkbox.entry.esm.js.map +1 -0
  40. package/dist/ui-webc/scout-switch.entry.esm.js.map +1 -0
  41. package/dist/ui-webc/ui-webc.esm.js +1 -1
  42. package/package.json +2 -1
  43. /package/dist/ui-webc/{p-fb926c68.entry.js.map → p-7245a55a.entry.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2025-11-22T22:58:05",
2
+ "timestamp": "2025-12-04T09:42:21",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.38.1",
@@ -359,6 +359,164 @@
359
359
  "dependencies": [],
360
360
  "dependencyGraph": {}
361
361
  },
362
+ {
363
+ "filePath": "src/components/checkbox/checkbox.tsx",
364
+ "encapsulation": "scoped",
365
+ "tag": "scout-checkbox",
366
+ "readme": "# scout-checkbox\n",
367
+ "docs": "",
368
+ "docsTags": [],
369
+ "usage": {},
370
+ "props": [
371
+ {
372
+ "name": "ariaLabelledby",
373
+ "type": "string",
374
+ "complexType": {
375
+ "original": "string",
376
+ "resolved": "string",
377
+ "references": {}
378
+ },
379
+ "mutable": false,
380
+ "attr": "aria-labelledby",
381
+ "reflectToAttr": false,
382
+ "docs": "Use this prop if you need to connect your checkbox with another element describing its use, other than the property label.",
383
+ "docsTags": [],
384
+ "values": [
385
+ {
386
+ "type": "string"
387
+ }
388
+ ],
389
+ "optional": false,
390
+ "required": false,
391
+ "getter": false,
392
+ "setter": false
393
+ },
394
+ {
395
+ "name": "checked",
396
+ "type": "boolean",
397
+ "complexType": {
398
+ "original": "boolean",
399
+ "resolved": "boolean",
400
+ "references": {}
401
+ },
402
+ "mutable": false,
403
+ "attr": "checked",
404
+ "reflectToAttr": false,
405
+ "docs": "",
406
+ "docsTags": [
407
+ {
408
+ "name": "default",
409
+ "text": "false"
410
+ }
411
+ ],
412
+ "default": "false",
413
+ "values": [
414
+ {
415
+ "type": "boolean"
416
+ }
417
+ ],
418
+ "optional": false,
419
+ "required": false,
420
+ "getter": false,
421
+ "setter": false
422
+ },
423
+ {
424
+ "name": "disabled",
425
+ "type": "boolean",
426
+ "complexType": {
427
+ "original": "boolean",
428
+ "resolved": "boolean",
429
+ "references": {}
430
+ },
431
+ "mutable": false,
432
+ "attr": "disabled",
433
+ "reflectToAttr": false,
434
+ "docs": "",
435
+ "docsTags": [
436
+ {
437
+ "name": "default",
438
+ "text": "false"
439
+ }
440
+ ],
441
+ "default": "false",
442
+ "values": [
443
+ {
444
+ "type": "boolean"
445
+ }
446
+ ],
447
+ "optional": false,
448
+ "required": false,
449
+ "getter": false,
450
+ "setter": false
451
+ },
452
+ {
453
+ "name": "label",
454
+ "type": "string",
455
+ "complexType": {
456
+ "original": "string",
457
+ "resolved": "string",
458
+ "references": {}
459
+ },
460
+ "mutable": false,
461
+ "attr": "label",
462
+ "reflectToAttr": false,
463
+ "docs": "",
464
+ "docsTags": [],
465
+ "values": [
466
+ {
467
+ "type": "string"
468
+ }
469
+ ],
470
+ "optional": false,
471
+ "required": false,
472
+ "getter": false,
473
+ "setter": false
474
+ }
475
+ ],
476
+ "methods": [],
477
+ "events": [
478
+ {
479
+ "event": "_fieldId",
480
+ "detail": "string",
481
+ "bubbles": true,
482
+ "complexType": {
483
+ "original": "string",
484
+ "resolved": "string",
485
+ "references": {}
486
+ },
487
+ "cancelable": true,
488
+ "composed": true,
489
+ "docs": "Internal event used for form field association.",
490
+ "docsTags": []
491
+ },
492
+ {
493
+ "event": "scoutCheckboxChecked",
494
+ "detail": "{ checked: boolean; element: HTMLInputElement; }",
495
+ "bubbles": true,
496
+ "complexType": {
497
+ "original": "{\n checked: boolean;\n element: HTMLInputElement;\n }",
498
+ "resolved": "{ checked: boolean; element: HTMLInputElement; }",
499
+ "references": {
500
+ "HTMLInputElement": {
501
+ "location": "global",
502
+ "id": "global::HTMLInputElement"
503
+ }
504
+ }
505
+ },
506
+ "cancelable": true,
507
+ "composed": true,
508
+ "docs": "",
509
+ "docsTags": []
510
+ }
511
+ ],
512
+ "listeners": [],
513
+ "styles": [],
514
+ "slots": [],
515
+ "parts": [],
516
+ "dependents": [],
517
+ "dependencies": [],
518
+ "dependencyGraph": {}
519
+ },
362
520
  {
363
521
  "filePath": "src/components/field/field.tsx",
364
522
  "encapsulation": "scoped",
@@ -731,6 +889,164 @@
731
889
  "dependents": [],
732
890
  "dependencies": [],
733
891
  "dependencyGraph": {}
892
+ },
893
+ {
894
+ "filePath": "src/components/switch/switch.tsx",
895
+ "encapsulation": "shadow",
896
+ "tag": "scout-switch",
897
+ "readme": "# scout-switch\n",
898
+ "docs": "",
899
+ "docsTags": [],
900
+ "usage": {},
901
+ "props": [
902
+ {
903
+ "name": "ariaLabelledby",
904
+ "type": "string",
905
+ "complexType": {
906
+ "original": "string",
907
+ "resolved": "string",
908
+ "references": {}
909
+ },
910
+ "mutable": false,
911
+ "attr": "aria-labelledby",
912
+ "reflectToAttr": false,
913
+ "docs": "Use this prop if you need to connect your switch with another element describing its use, other than the property label.",
914
+ "docsTags": [],
915
+ "values": [
916
+ {
917
+ "type": "string"
918
+ }
919
+ ],
920
+ "optional": false,
921
+ "required": false,
922
+ "getter": false,
923
+ "setter": false
924
+ },
925
+ {
926
+ "name": "disabled",
927
+ "type": "boolean",
928
+ "complexType": {
929
+ "original": "boolean",
930
+ "resolved": "boolean",
931
+ "references": {}
932
+ },
933
+ "mutable": false,
934
+ "attr": "disabled",
935
+ "reflectToAttr": false,
936
+ "docs": "",
937
+ "docsTags": [
938
+ {
939
+ "name": "default",
940
+ "text": "false"
941
+ }
942
+ ],
943
+ "default": "false",
944
+ "values": [
945
+ {
946
+ "type": "boolean"
947
+ }
948
+ ],
949
+ "optional": false,
950
+ "required": false,
951
+ "getter": false,
952
+ "setter": false
953
+ },
954
+ {
955
+ "name": "label",
956
+ "type": "string",
957
+ "complexType": {
958
+ "original": "string",
959
+ "resolved": "string",
960
+ "references": {}
961
+ },
962
+ "mutable": false,
963
+ "attr": "label",
964
+ "reflectToAttr": false,
965
+ "docs": "",
966
+ "docsTags": [],
967
+ "values": [
968
+ {
969
+ "type": "string"
970
+ }
971
+ ],
972
+ "optional": false,
973
+ "required": false,
974
+ "getter": false,
975
+ "setter": false
976
+ },
977
+ {
978
+ "name": "toggled",
979
+ "type": "boolean",
980
+ "complexType": {
981
+ "original": "boolean",
982
+ "resolved": "boolean",
983
+ "references": {}
984
+ },
985
+ "mutable": false,
986
+ "attr": "toggled",
987
+ "reflectToAttr": false,
988
+ "docs": "Indicates whether the switch is toggled on or off.",
989
+ "docsTags": [
990
+ {
991
+ "name": "default",
992
+ "text": "false"
993
+ }
994
+ ],
995
+ "default": "false",
996
+ "values": [
997
+ {
998
+ "type": "boolean"
999
+ }
1000
+ ],
1001
+ "optional": false,
1002
+ "required": false,
1003
+ "getter": false,
1004
+ "setter": false
1005
+ }
1006
+ ],
1007
+ "methods": [],
1008
+ "events": [
1009
+ {
1010
+ "event": "_fieldId",
1011
+ "detail": "string",
1012
+ "bubbles": true,
1013
+ "complexType": {
1014
+ "original": "string",
1015
+ "resolved": "string",
1016
+ "references": {}
1017
+ },
1018
+ "cancelable": true,
1019
+ "composed": true,
1020
+ "docs": "Internal event used for form field association.",
1021
+ "docsTags": []
1022
+ },
1023
+ {
1024
+ "event": "scoutSwitchToggled",
1025
+ "detail": "{ toggled: boolean; element: HTMLInputElement; }",
1026
+ "bubbles": true,
1027
+ "complexType": {
1028
+ "original": "{\n toggled: boolean;\n element: HTMLInputElement;\n }",
1029
+ "resolved": "{ toggled: boolean; element: HTMLInputElement; }",
1030
+ "references": {
1031
+ "HTMLInputElement": {
1032
+ "location": "global",
1033
+ "id": "global::HTMLInputElement"
1034
+ }
1035
+ }
1036
+ },
1037
+ "cancelable": true,
1038
+ "composed": true,
1039
+ "docs": "",
1040
+ "docsTags": []
1041
+ }
1042
+ ],
1043
+ "listeners": [],
1044
+ "styles": [],
1045
+ "slots": [],
1046
+ "parts": [],
1047
+ "dependents": [],
1048
+ "dependencies": [],
1049
+ "dependencyGraph": {}
734
1050
  }
735
1051
  ],
736
1052
  "typeLibrary": {
@@ -4,7 +4,7 @@ export { s as setNonce } from './index-DByXnE9g.js';
4
4
  const defineCustomElements = async (win, options) => {
5
5
  if (typeof window === 'undefined') return undefined;
6
6
  await globalScripts();
7
- return bootstrapLazy([["scout-bottom-bar",[[273,"scout-bottom-bar"]]],["scout-bottom-bar-item",[[273,"scout-bottom-bar-item",{"type":[1],"href":[1],"icon":[1],"label":[1],"active":[4]}]]],["scout-button",[[273,"scout-button",{"type":[1],"variant":[1],"icon":[1]}]]],["scout-card",[[273,"scout-card"]]],["scout-field",[[262,"scout-field",{"label":[1],"helpText":[1,"help-text"],"inputId":[32],"errorText":[32],"errorHidden":[32]},[[0,"_fieldId","catchFieldId"],[0,"scoutInputChange","handleInputChange"],[0,"scoutBlur","handleValidationBlur"]]]]],["scout-input",[[258,"scout-input",{"type":[1],"inputmode":[1],"pattern":[1],"value":[1],"disabled":[4],"validate":[16],"ariaId":[32]}]]]], options);
7
+ return bootstrapLazy([["scout-bottom-bar",[[273,"scout-bottom-bar"]]],["scout-bottom-bar-item",[[273,"scout-bottom-bar-item",{"type":[1],"href":[1],"icon":[1],"label":[1],"active":[4]}]]],["scout-button",[[273,"scout-button",{"type":[1],"variant":[1],"icon":[1]}]]],["scout-card",[[273,"scout-card"]]],["scout-checkbox",[[258,"scout-checkbox",{"checked":[4],"disabled":[4],"ariaLabelledby":[1,"aria-labelledby"],"label":[1],"ariaId":[32]}]]],["scout-field",[[262,"scout-field",{"label":[1],"helpText":[1,"help-text"],"inputId":[32],"errorText":[32],"errorHidden":[32]},[[0,"_fieldId","catchFieldId"],[0,"scoutInputChange","handleInputChange"],[0,"scoutBlur","handleValidationBlur"]]]]],["scout-input",[[258,"scout-input",{"type":[1],"inputmode":[1],"pattern":[1],"value":[1],"disabled":[4],"validate":[16],"ariaId":[32]}]]],["scout-switch",[[273,"scout-switch",{"toggled":[4],"disabled":[4],"ariaLabelledby":[1,"aria-labelledby"],"label":[1],"ariaId":[32]}]]]], options);
8
8
  };
9
9
 
10
10
  export { defineCustomElements };
@@ -0,0 +1,51 @@
1
+ import { r as registerInstance, c as createEvent, h } from './index-DByXnE9g.js';
2
+
3
+ const checkSvg = 'data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9ImN1cnJlbnRDb2xvciIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCiAgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItY2hlY2siCj4KICA8cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4KICA8cGF0aCBkPSJNNSAxMmw1IDVsMTAgLTEwIiAvPgo8L3N2Zz4=';
4
+
5
+ const checkboxCss = ".checkbox.sc-scout-checkbox{width:var(--spacing-6);height:var(--spacing-6);-moz-appearance:none;appearance:none;-webkit-appearance:none;display:flex;align-content:center;justify-content:center;border-radius:3px;background-color:var(--color-text-brand-inverse);border:2px solid var(--color-gray-300);position:relative}.checkbox.sc-scout-checkbox:hover{border:2px solid var(--color-gray-400);box-shadow:inset 0px 0px 5px 5px var(--color-background-brand-subtle-hovered);cursor:pointer}.checkbox.sc-scout-checkbox:active{background-color:var(--color-background-brand-subtle-pressed)}.checkbox.sc-scout-checkbox:checked:hover{background-color:var(--color-background-brand-hovered);border:2px solid var(--color-background-brand-hovered);box-shadow:none}.checkbox.sc-scout-checkbox:checked{background-color:var(--color-background-brand-base);border-color:var(--color-background-brand-base)}.checkbox.sc-scout-checkbox::after{content:\"\";position:absolute;width:var(--spacing-10);height:var(--spacing-10);top:50%;left:50%;transform:translate(-50%, -50%)}.checkbox.sc-scout-checkbox:checked::before{content:\"\";background-color:var(--color-text-brand-inverse);width:var(--spacing-6);height:var(--spacing-6);position:absolute;top:50%;left:50%;right:0;bottom:0;transform:translate(-50%, -50%);-webkit-mask-image:var(--icon-checkbox);mask-image:var(--icon-checkbox);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.checkbox.sc-scout-checkbox:disabled{pointer-events:none;background-color:var(--color-gray-100);border-color:var(--color-gray-100)}label.sc-scout-checkbox{display:flex;flex-direction:row-reverse;align-items:center;font:var(--type-label-base);color:var(--color-text-base)}.inlineDivider.sc-scout-checkbox{width:var(--spacing-2)}";
6
+
7
+ const ScoutCheckbox = class {
8
+ constructor(hostRef) {
9
+ registerInstance(this, hostRef);
10
+ this.scoutCheckboxChecked = createEvent(this, "scoutCheckboxChecked");
11
+ this._fieldId = createEvent(this, "_fieldId");
12
+ }
13
+ checked = false;
14
+ disabled = false;
15
+ /**
16
+ * Use this prop if you need to connect your checkbox with another element describing its use, other than the property label.
17
+ */
18
+ ariaLabelledby;
19
+ label;
20
+ ariaId;
21
+ scoutCheckboxChecked;
22
+ /**
23
+ * Internal event used for form field association.
24
+ */
25
+ _fieldId;
26
+ componentWillLoad() {
27
+ this.ariaId = `_${Math.random().toString(36).substring(2, 9)}`;
28
+ this._fieldId.emit(this.ariaId);
29
+ }
30
+ onClick(event) {
31
+ const checkbox = event.target;
32
+ console.log("checkbox", checkbox.checked);
33
+ this.scoutCheckboxChecked.emit({
34
+ checked: checkbox.checked,
35
+ element: checkbox,
36
+ });
37
+ }
38
+ /*
39
+ todo:
40
+ - Wrap checkbox with label if used.
41
+ - make sure it works with field nicely with label.
42
+ */
43
+ render() {
44
+ const Tag = this.label && this.label.length ? "label" : "div";
45
+ return (h(Tag, { key: '2d97627d29b09521936eeef81419673d70fc75f1' }, this.label, h("span", { key: 'f62b4e360f03b4b6fb6e8fee326756552a5a631d', class: "inlineDivider" }), h("input", { key: '7ca6b74e12c369fc937d1b8c85e70c52fd9aa25c', class: "checkbox", onChange: (event) => this.onClick(event), style: { "--icon-checkbox": `url(${checkSvg})` }, type: "checkbox", id: this.ariaId, "aria-labelledby": this.ariaLabelledby, "aria-disabled": this.disabled, disabled: this.disabled, checked: this.checked })));
46
+ }
47
+ };
48
+ ScoutCheckbox.style = checkboxCss;
49
+
50
+ export { ScoutCheckbox as scout_checkbox };
51
+ //# sourceMappingURL=scout-checkbox.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scout-checkbox.entry.js","sources":["../../node_modules/.pnpm/@tabler+icons@3.35.0/node_modules/@tabler/icons/icons/outline/check.svg","src/components/checkbox/checkbox.css?tag=scout-checkbox&encapsulation=scoped","src/components/checkbox/checkbox.tsx"],"sourcesContent":["<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-check\"\n>\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path d=\"M5 12l5 5l10 -10\" />\n</svg>",".checkbox {\n width: var(--spacing-6);\n height: var(--spacing-6);\n appearance: none;\n -webkit-appearance: none;\n display: flex;\n align-content: center;\n justify-content: center;\n border-radius: 3px;\n background-color: var(--color-text-brand-inverse);\n border: 2px solid var(--color-gray-300);\n position: relative;\n}\n\n.checkbox:hover {\n border: 2px solid var(--color-gray-400);\n box-shadow: inset 0px 0px 5px 5px var(--color-background-brand-subtle-hovered);\n cursor: pointer;\n}\n\n.checkbox:active {\n background-color: var(--color-background-brand-subtle-pressed);\n}\n\n.checkbox:checked:hover {\n background-color: var(--color-background-brand-hovered);\n border: 2px solid var(--color-background-brand-hovered);\n box-shadow: none;\n}\n\n.checkbox:checked {\n background-color: var(--color-background-brand-base);\n border-color: var(--color-background-brand-base);\n}\n\n.checkbox::after {\n content: \"\";\n position: absolute;\n width: var(--spacing-10);\n height: var(--spacing-10);\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n.checkbox:checked::before {\n content: \"\";\n background-color: var(--color-text-brand-inverse);\n width: var(--spacing-6);\n height: var(--spacing-6);\n position: absolute;\n /* Needed because of the border */\n top: 50%;\n left: 50%;\n right: 0;\n bottom: 0;\n transform: translate(-50%, -50%);\n mask-image: var(--icon-checkbox);\n mask-repeat: no-repeat;\n}\n\n.checkbox:disabled {\n pointer-events: none;\n background-color: var(--color-gray-100);\n border-color: var(--color-gray-100);\n}\n\nlabel {\n display: flex;\n flex-direction: row-reverse;\n align-items: center;\n font: var(--type-label-base);\n color: var(--color-text-base);\n}\n\n.inlineDivider {\n width: var(--spacing-2);\n}\n","import {\n Component,\n Event,\n type EventEmitter,\n h,\n Prop,\n State,\n} from \"@stencil/core\";\nimport checkIcon from \"@tabler/icons/outline/check.svg\";\n\n@Component({\n tag: \"scout-checkbox\",\n styleUrl: \"checkbox.css\",\n scoped: true,\n})\nexport class ScoutCheckbox {\n @Prop() checked: boolean = false;\n\n @Prop() disabled: boolean = false;\n\n /**\n * Use this prop if you need to connect your checkbox with another element describing its use, other than the property label.\n */\n @Prop() ariaLabelledby: string;\n\n @Prop() label: string;\n\n @State() ariaId: string;\n\n @Event() scoutCheckboxChecked: EventEmitter<{\n checked: boolean;\n element: HTMLInputElement;\n }>;\n /**\n * Internal event used for form field association.\n */\n @Event() _fieldId: EventEmitter<string>;\n\n componentWillLoad(): Promise<void> | void {\n this.ariaId = `_${Math.random().toString(36).substring(2, 9)}`;\n this._fieldId.emit(this.ariaId);\n }\n\n onClick(event: Event) {\n const checkbox = event.target as HTMLInputElement;\n console.log(\"checkbox\", checkbox.checked);\n\n this.scoutCheckboxChecked.emit({\n checked: checkbox.checked,\n element: checkbox,\n });\n }\n /*\n todo:\n - Wrap checkbox with label if used.\n - make sure it works with field nicely with label.\n */\n\n render() {\n const Tag = this.label && this.label.length ? \"label\" : \"div\";\n return (\n <Tag>\n {this.label}\n <span class=\"inlineDivider\"></span>\n <input\n class=\"checkbox\"\n onChange={(event) => this.onClick(event)}\n style={{ \"--icon-checkbox\": `url(${checkIcon})` }}\n type=\"checkbox\"\n id={this.ariaId}\n aria-labelledby={this.ariaLabelledby}\n aria-disabled={this.disabled}\n disabled={this.disabled}\n checked={this.checked}\n />\n </Tag>\n );\n }\n}\n"],"names":["checkIcon"],"mappings":";;AAAA,MAAM,QAAQ,GAAG,4fAA4f;;ACA7gB,MAAM,WAAW,GAAG,0sDAA0sD;;MCejtD,aAAa,GAAA,MAAA;;;;;;IAChB,OAAO,GAAY,KAAK;IAExB,QAAQ,GAAY,KAAK;AAEjC;;AAEG;AACK,IAAA,cAAc;AAEd,IAAA,KAAK;AAEJ,IAAA,MAAM;AAEN,IAAA,oBAAoB;AAI7B;;AAEG;AACM,IAAA,QAAQ;IAEjB,iBAAiB,GAAA;QACf,IAAI,CAAC,MAAM,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE;QAC9D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGjC,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAA0B;QACjD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC;AAEzC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;AACzB,YAAA,OAAO,EAAE,QAAQ;AAClB,SAAA,CAAC;;AAEJ;;;;AAIE;IAEF,MAAM,GAAA;AACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,KAAK;QAC7D,QACE,EAAC,GAAG,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACD,IAAI,CAAC,KAAK,EACX,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,eAAe,EAAQ,CAAA,EACnC,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,UAAU,EAChB,QAAQ,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EACxC,KAAK,EAAE,EAAE,iBAAiB,EAAE,CAAA,IAAA,EAAOA,QAAS,CAAA,CAAA,CAAG,EAAE,EACjD,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,IAAI,CAAC,MAAM,EAAA,iBAAA,EACE,IAAI,CAAC,cAAc,EAAA,eAAA,EACrB,IAAI,CAAC,QAAQ,EAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAA,CACrB,CACE;;;;;;;","x_google_ignoreList":[0]}
@@ -36,7 +36,7 @@ const ScoutField = class {
36
36
  this.errorHidden = false;
37
37
  }
38
38
  render() {
39
- return (h("div", { key: 'bcd308f7ff69063860281b7f4f48ef2baa608308', class: "field" }, h("label", { key: '756d4a97399ed94970b3d39850dd5c4d0e155a99', htmlFor: this.inputId, class: "label" }, this.label), h("slot", { key: '3700f8aba58c90b14224e0d35a147f1a11ba7f98' }), h("p", { key: '60a70a27e3b7811accc657bbe49405306d342d9d', class: "error-text", "aria-live": "polite" }, !this.errorHidden && this.errorText), this.helpText && h("p", { key: '44f8377005f43ca1a332d6c4d8aec48e5aafb3c4', class: "help-text" }, this.helpText)));
39
+ return (h("div", { key: '0ba5919cf10618bf4617e1ced85485a6d136f668', class: "field" }, h("label", { key: '55cac1b4eb9c0d58ea1e4045b9c85c30a384d99b', htmlFor: this.inputId, class: "label" }, this.label), h("slot", { key: 'b5931e88ad82e693ff1dc24acd99db393f048fab' }), h("p", { key: '6354b6187ba63158bdd5c784787f1612eb641db4', class: "error-text", "aria-live": "polite" }, !this.errorHidden && this.errorText), this.helpText && h("p", { key: 'ba9e47977b682fbe28afd61c6a00832506860e56', class: "help-text" }, this.helpText)));
40
40
  }
41
41
  };
42
42
  ScoutField.style = fieldCss;
@@ -0,0 +1,47 @@
1
+ import { r as registerInstance, c as createEvent, h } from './index-DByXnE9g.js';
2
+
3
+ const switchCss = ".switch{width:var(--spacing-12);height:var(--spacing-6);-moz-appearance:none;appearance:none;-webkit-appearance:none;border-radius:var(--spacing-8);background-color:var(--color-text-brand-inverse);border:1px solid var(--color-gray-300);position:relative;display:flex;align-content:center;justify-content:center;transition-property:border-color;transition-duration:0.3s;transition-timing-function:ease-in-out;cursor:pointer;--switch-ball-size:calc((var(--spacing-6) - var(--spacing-1) / 2) + 1px)}.switch:hover{transition-property:none;border-color:var(--color-gray-400);background-color:var(--color-background-brand-subtle-hovered)}.switch:active{background-color:var(--color-background-brand-subtle-pressed)}.switch:checked{border-color:var(--color-background-brand-base)}.switch:hover::before{background-color:var(--color-gray-400)}.switch::before{content:\"\";background-color:var(--color-gray-300);width:var(--switch-ball-size);height:var(--switch-ball-size);border-radius:50%;position:absolute;left:-1px;right:0;transition-duration:0.3s;transition-property:left, right}.switch:checked::before{content:\"\";background-color:var(--color-background-brand-base);left:calc(100% - (var(--spacing-6) - var(--spacing-1) / 2) + 1px);left:calc(100% - calc(var(--spacing-6) - var(--spacing-1) / 2) + 1px)}.switch:disabled{pointer-events:none;background-color:var(--color-gray-100);border-color:var(--color-gray-100)}.switch:disabled::before{background-color:var(--color-gray-300)}label{display:flex;flex-direction:row-reverse;align-items:center;font:var(--type-label-base);color:var(--color-text-base)}.inlineDivider{width:var(--spacing-2)}";
4
+
5
+ const ScoutSwitch = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ this.scoutSwitchToggled = createEvent(this, "scoutSwitchToggled");
9
+ this._fieldId = createEvent(this, "_fieldId");
10
+ }
11
+ /**
12
+ * Indicates whether the switch is toggled on or off.
13
+ */
14
+ toggled = false;
15
+ disabled = false;
16
+ /**
17
+ * Use this prop if you need to connect your switch with another element describing its use, other than the property label.
18
+ */
19
+ ariaLabelledby;
20
+ label;
21
+ ariaId;
22
+ scoutSwitchToggled;
23
+ /**
24
+ * Internal event used for form field association.
25
+ */
26
+ _fieldId;
27
+ componentWillLoad() {
28
+ this.ariaId = `_${Math.random().toString(36).substring(2, 9)}`;
29
+ this._fieldId.emit(this.ariaId);
30
+ }
31
+ onClick(event) {
32
+ const switchElement = event.target;
33
+ this.scoutSwitchToggled.emit({
34
+ toggled: switchElement.checked,
35
+ element: switchElement,
36
+ });
37
+ }
38
+ render() {
39
+ const Tag = this.label && this.label.length ? "label" : "div";
40
+ return (h(Tag, { key: '06f33e80dedee05abc34f15fbd8453f3df50d760' }, this.label, h("span", { key: '3061c223b64f313d4ebcd4b068ca84d83c5bb9c2', class: "inlineDivider" }), h("input", { key: '66a3a848ce3aa484af9bb13eda6cc30e46e74c1d', class: "switch", onChange: (event) => this.onClick(event), type: "checkbox", id: this.ariaId, "aria-labelledby": this.ariaLabelledby, "aria-disabled": this.disabled, disabled: this.disabled, checked: this.toggled })));
41
+ }
42
+ static get delegatesFocus() { return true; }
43
+ };
44
+ ScoutSwitch.style = switchCss;
45
+
46
+ export { ScoutSwitch as scout_switch };
47
+ //# sourceMappingURL=scout-switch.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scout-switch.entry.js","sources":["src/components/switch/switch.css?tag=scout-switch&encapsulation=shadow","src/components/switch/switch.tsx"],"sourcesContent":[".switch {\n width: var(--spacing-12);\n height: var(--spacing-6);\n appearance: none;\n -webkit-appearance: none;\n border-radius: var(--spacing-8);\n background-color: var(--color-text-brand-inverse);\n border: 1px solid var(--color-gray-300);\n position: relative;\n display: flex;\n align-content: center;\n justify-content: center;\n transition-property: border-color;\n transition-duration: 0.3s;\n transition-timing-function: ease-in-out;\n cursor: pointer;\n --switch-ball-size: calc((var(--spacing-6) - var(--spacing-1) / 2) + 1px);\n}\n\n.switch:hover {\n transition-property: none;\n border-color: var(--color-gray-400);\n background-color: var(--color-background-brand-subtle-hovered);\n}\n\n.switch:active {\n background-color: var(--color-background-brand-subtle-pressed);\n}\n\n.switch:checked {\n border-color: var(--color-background-brand-base);\n}\n\n.switch:hover::before {\n background-color: var(--color-gray-400);\n}\n\n.switch::before {\n content: \"\";\n background-color: var(--color-gray-300);\n width: var(--switch-ball-size);\n height: var(--switch-ball-size);\n border-radius: 50%;\n position: absolute;\n left: -1px;\n right: 0;\n transition-duration: 0.3s;\n transition-property: left, right;\n}\n.switch:checked::before {\n content: \"\";\n background-color: var(--color-background-brand-base);\n left: calc(100% - calc(var(--spacing-6) - var(--spacing-1) / 2) + 1px);\n}\n\n.switch:disabled {\n pointer-events: none;\n background-color: var(--color-gray-100);\n border-color: var(--color-gray-100);\n}\n\n.switch:disabled::before {\n background-color: var(--color-gray-300);\n}\n\nlabel {\n display: flex;\n flex-direction: row-reverse;\n align-items: center;\n font: var(--type-label-base);\n color: var(--color-text-base);\n}\n\n.inlineDivider {\n width: var(--spacing-2);\n}\n","import {\n Component,\n Event,\n type EventEmitter,\n h,\n Prop,\n State,\n} from \"@stencil/core\";\n\n@Component({\n tag: \"scout-switch\",\n styleUrl: \"switch.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ScoutSwitch {\n /**\n * Indicates whether the switch is toggled on or off.\n */\n @Prop() toggled: boolean = false;\n\n @Prop() disabled: boolean = false;\n\n /**\n * Use this prop if you need to connect your switch with another element describing its use, other than the property label.\n */\n @Prop() ariaLabelledby: string;\n\n @Prop() label: string;\n\n @State() ariaId: string;\n\n @Event() scoutSwitchToggled: EventEmitter<{\n toggled: boolean;\n element: HTMLInputElement;\n }>;\n /**\n * Internal event used for form field association.\n */\n @Event() _fieldId: EventEmitter<string>;\n\n componentWillLoad(): Promise<void> | void {\n this.ariaId = `_${Math.random().toString(36).substring(2, 9)}`;\n this._fieldId.emit(this.ariaId);\n }\n\n onClick(event: Event) {\n const switchElement = event.target as HTMLInputElement;\n\n this.scoutSwitchToggled.emit({\n toggled: switchElement.checked,\n element: switchElement,\n });\n }\n\n render() {\n const Tag = this.label && this.label.length ? \"label\" : \"div\";\n return (\n <Tag>\n {this.label}\n <span class=\"inlineDivider\"></span>\n <input\n class=\"switch\"\n onChange={(event) => this.onClick(event)}\n type=\"checkbox\"\n id={this.ariaId}\n aria-labelledby={this.ariaLabelledby}\n aria-disabled={this.disabled}\n disabled={this.disabled}\n checked={this.toggled}\n />\n </Tag>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,SAAS,GAAG,omDAAomD;;MCgBzmD,WAAW,GAAA,MAAA;;;;;;AACtB;;AAEG;IACK,OAAO,GAAY,KAAK;IAExB,QAAQ,GAAY,KAAK;AAEjC;;AAEG;AACK,IAAA,cAAc;AAEd,IAAA,KAAK;AAEJ,IAAA,MAAM;AAEN,IAAA,kBAAkB;AAI3B;;AAEG;AACM,IAAA,QAAQ;IAEjB,iBAAiB,GAAA;QACf,IAAI,CAAC,MAAM,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE;QAC9D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGjC,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAA0B;AAEtD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC3B,OAAO,EAAE,aAAa,CAAC,OAAO;AAC9B,YAAA,OAAO,EAAE,aAAa;AACvB,SAAA,CAAC;;IAGJ,MAAM,GAAA;AACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,KAAK;QAC7D,QACE,EAAC,GAAG,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACD,IAAI,CAAC,KAAK,EACX,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,eAAe,EAAQ,CAAA,EACnC,CACE,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,QAAQ,EACd,QAAQ,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EACxC,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,IAAI,CAAC,MAAM,EAAA,iBAAA,EACE,IAAI,CAAC,cAAc,mBACrB,IAAI,CAAC,QAAQ,EAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAA,CACrB,CACE;;;;;;;;"}
@@ -16,6 +16,6 @@ var patchBrowser = () => {
16
16
 
17
17
  patchBrowser().then(async (options) => {
18
18
  await globalScripts();
19
- return bootstrapLazy([["scout-bottom-bar",[[273,"scout-bottom-bar"]]],["scout-bottom-bar-item",[[273,"scout-bottom-bar-item",{"type":[1],"href":[1],"icon":[1],"label":[1],"active":[4]}]]],["scout-button",[[273,"scout-button",{"type":[1],"variant":[1],"icon":[1]}]]],["scout-card",[[273,"scout-card"]]],["scout-field",[[262,"scout-field",{"label":[1],"helpText":[1,"help-text"],"inputId":[32],"errorText":[32],"errorHidden":[32]},[[0,"_fieldId","catchFieldId"],[0,"scoutInputChange","handleInputChange"],[0,"scoutBlur","handleValidationBlur"]]]]],["scout-input",[[258,"scout-input",{"type":[1],"inputmode":[1],"pattern":[1],"value":[1],"disabled":[4],"validate":[16],"ariaId":[32]}]]]], options);
19
+ return bootstrapLazy([["scout-bottom-bar",[[273,"scout-bottom-bar"]]],["scout-bottom-bar-item",[[273,"scout-bottom-bar-item",{"type":[1],"href":[1],"icon":[1],"label":[1],"active":[4]}]]],["scout-button",[[273,"scout-button",{"type":[1],"variant":[1],"icon":[1]}]]],["scout-card",[[273,"scout-card"]]],["scout-checkbox",[[258,"scout-checkbox",{"checked":[4],"disabled":[4],"ariaLabelledby":[1,"aria-labelledby"],"label":[1],"ariaId":[32]}]]],["scout-field",[[262,"scout-field",{"label":[1],"helpText":[1,"help-text"],"inputId":[32],"errorText":[32],"errorHidden":[32]},[[0,"_fieldId","catchFieldId"],[0,"scoutInputChange","handleInputChange"],[0,"scoutBlur","handleValidationBlur"]]]]],["scout-input",[[258,"scout-input",{"type":[1],"inputmode":[1],"pattern":[1],"value":[1],"disabled":[4],"validate":[16],"ariaId":[32]}]]],["scout-switch",[[273,"scout-switch",{"toggled":[4],"disabled":[4],"ariaLabelledby":[1,"aria-labelledby"],"label":[1],"ariaId":[32]}]]]], options);
20
20
  });
21
21
  //# sourceMappingURL=ui-webc.js.map
@@ -0,0 +1,22 @@
1
+ import { type EventEmitter } from "../../stencil-public-runtime";
2
+ export declare class ScoutCheckbox {
3
+ checked: boolean;
4
+ disabled: boolean;
5
+ /**
6
+ * Use this prop if you need to connect your checkbox with another element describing its use, other than the property label.
7
+ */
8
+ ariaLabelledby: string;
9
+ label: string;
10
+ ariaId: string;
11
+ scoutCheckboxChecked: EventEmitter<{
12
+ checked: boolean;
13
+ element: HTMLInputElement;
14
+ }>;
15
+ /**
16
+ * Internal event used for form field association.
17
+ */
18
+ _fieldId: EventEmitter<string>;
19
+ componentWillLoad(): Promise<void> | void;
20
+ onClick(event: Event): void;
21
+ render(): any;
22
+ }
@@ -0,0 +1,25 @@
1
+ import { type EventEmitter } from "../../stencil-public-runtime";
2
+ export declare class ScoutSwitch {
3
+ /**
4
+ * Indicates whether the switch is toggled on or off.
5
+ */
6
+ toggled: boolean;
7
+ disabled: boolean;
8
+ /**
9
+ * Use this prop if you need to connect your switch with another element describing its use, other than the property label.
10
+ */
11
+ ariaLabelledby: string;
12
+ label: string;
13
+ ariaId: string;
14
+ scoutSwitchToggled: EventEmitter<{
15
+ toggled: boolean;
16
+ element: HTMLInputElement;
17
+ }>;
18
+ /**
19
+ * Internal event used for form field association.
20
+ */
21
+ _fieldId: EventEmitter<string>;
22
+ componentWillLoad(): Promise<void> | void;
23
+ onClick(event: Event): void;
24
+ render(): any;
25
+ }