@saitec/ui 0.1.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.

Potentially problematic release.


This version of @saitec/ui might be problematic. Click here for more details.

Files changed (138) hide show
  1. package/README.md +64 -0
  2. package/fesm2022/saitec-ui-autocomplete.mjs +214 -0
  3. package/fesm2022/saitec-ui-autocomplete.mjs.map +1 -0
  4. package/fesm2022/saitec-ui-badge.mjs +26 -0
  5. package/fesm2022/saitec-ui-badge.mjs.map +1 -0
  6. package/fesm2022/saitec-ui-button.mjs +35 -0
  7. package/fesm2022/saitec-ui-button.mjs.map +1 -0
  8. package/fesm2022/saitec-ui-card.mjs +28 -0
  9. package/fesm2022/saitec-ui-card.mjs.map +1 -0
  10. package/fesm2022/saitec-ui-checkbox.mjs +87 -0
  11. package/fesm2022/saitec-ui-checkbox.mjs.map +1 -0
  12. package/fesm2022/saitec-ui-chip.mjs +32 -0
  13. package/fesm2022/saitec-ui-chip.mjs.map +1 -0
  14. package/fesm2022/saitec-ui-confirm.mjs +93 -0
  15. package/fesm2022/saitec-ui-confirm.mjs.map +1 -0
  16. package/fesm2022/saitec-ui-core.mjs +4 -0
  17. package/fesm2022/saitec-ui-core.mjs.map +1 -0
  18. package/fesm2022/saitec-ui-date-picker.mjs +92 -0
  19. package/fesm2022/saitec-ui-date-picker.mjs.map +1 -0
  20. package/fesm2022/saitec-ui-dialog.mjs +95 -0
  21. package/fesm2022/saitec-ui-dialog.mjs.map +1 -0
  22. package/fesm2022/saitec-ui-divider.mjs +22 -0
  23. package/fesm2022/saitec-ui-divider.mjs.map +1 -0
  24. package/fesm2022/saitec-ui-drawer.mjs +96 -0
  25. package/fesm2022/saitec-ui-drawer.mjs.map +1 -0
  26. package/fesm2022/saitec-ui-fieldset.mjs +32 -0
  27. package/fesm2022/saitec-ui-fieldset.mjs.map +1 -0
  28. package/fesm2022/saitec-ui-file-upload.mjs +206 -0
  29. package/fesm2022/saitec-ui-file-upload.mjs.map +1 -0
  30. package/fesm2022/saitec-ui-form-field.mjs +30 -0
  31. package/fesm2022/saitec-ui-form-field.mjs.map +1 -0
  32. package/fesm2022/saitec-ui-input-number.mjs +250 -0
  33. package/fesm2022/saitec-ui-input-number.mjs.map +1 -0
  34. package/fesm2022/saitec-ui-input.mjs +95 -0
  35. package/fesm2022/saitec-ui-input.mjs.map +1 -0
  36. package/fesm2022/saitec-ui-menu.mjs +46 -0
  37. package/fesm2022/saitec-ui-menu.mjs.map +1 -0
  38. package/fesm2022/saitec-ui-menubar.mjs +72 -0
  39. package/fesm2022/saitec-ui-menubar.mjs.map +1 -0
  40. package/fesm2022/saitec-ui-message.mjs +28 -0
  41. package/fesm2022/saitec-ui-message.mjs.map +1 -0
  42. package/fesm2022/saitec-ui-multiselect.mjs +209 -0
  43. package/fesm2022/saitec-ui-multiselect.mjs.map +1 -0
  44. package/fesm2022/saitec-ui-panel.mjs +32 -0
  45. package/fesm2022/saitec-ui-panel.mjs.map +1 -0
  46. package/fesm2022/saitec-ui-progress-spinner.mjs +24 -0
  47. package/fesm2022/saitec-ui-progress-spinner.mjs.map +1 -0
  48. package/fesm2022/saitec-ui-select.mjs +105 -0
  49. package/fesm2022/saitec-ui-select.mjs.map +1 -0
  50. package/fesm2022/saitec-ui-table.mjs +172 -0
  51. package/fesm2022/saitec-ui-table.mjs.map +1 -0
  52. package/fesm2022/saitec-ui-tabs.mjs +170 -0
  53. package/fesm2022/saitec-ui-tabs.mjs.map +1 -0
  54. package/fesm2022/saitec-ui-tag.mjs +26 -0
  55. package/fesm2022/saitec-ui-tag.mjs.map +1 -0
  56. package/fesm2022/saitec-ui-textarea.mjs +95 -0
  57. package/fesm2022/saitec-ui-textarea.mjs.map +1 -0
  58. package/fesm2022/saitec-ui-toast.mjs +109 -0
  59. package/fesm2022/saitec-ui-toast.mjs.map +1 -0
  60. package/fesm2022/saitec-ui-toggle-switch.mjs +85 -0
  61. package/fesm2022/saitec-ui-toggle-switch.mjs.map +1 -0
  62. package/fesm2022/saitec-ui-toolbar.mjs +20 -0
  63. package/fesm2022/saitec-ui-toolbar.mjs.map +1 -0
  64. package/fesm2022/saitec-ui-tooltip.mjs +219 -0
  65. package/fesm2022/saitec-ui-tooltip.mjs.map +1 -0
  66. package/fesm2022/saitec-ui.mjs +22 -0
  67. package/fesm2022/saitec-ui.mjs.map +1 -0
  68. package/lib/core/themes/dark.css +233 -0
  69. package/lib/core/themes/light.css +210 -0
  70. package/lib/core/tokens/components/autocomplete.css +26 -0
  71. package/lib/core/tokens/components/badge.css +26 -0
  72. package/lib/core/tokens/components/button.css +90 -0
  73. package/lib/core/tokens/components/card.css +15 -0
  74. package/lib/core/tokens/components/checkbox.css +17 -0
  75. package/lib/core/tokens/components/chip.css +16 -0
  76. package/lib/core/tokens/components/confirm.css +8 -0
  77. package/lib/core/tokens/components/date-picker.css +18 -0
  78. package/lib/core/tokens/components/dialog.css +18 -0
  79. package/lib/core/tokens/components/divider.css +9 -0
  80. package/lib/core/tokens/components/drawer.css +16 -0
  81. package/lib/core/tokens/components/fieldset.css +15 -0
  82. package/lib/core/tokens/components/file-upload.css +31 -0
  83. package/lib/core/tokens/components/form-field.css +14 -0
  84. package/lib/core/tokens/components/input-number.css +20 -0
  85. package/lib/core/tokens/components/input.css +31 -0
  86. package/lib/core/tokens/components/menu.css +19 -0
  87. package/lib/core/tokens/components/menubar.css +18 -0
  88. package/lib/core/tokens/components/message.css +29 -0
  89. package/lib/core/tokens/components/multiselect.css +25 -0
  90. package/lib/core/tokens/components/panel.css +18 -0
  91. package/lib/core/tokens/components/progress-spinner.css +10 -0
  92. package/lib/core/tokens/components/select.css +18 -0
  93. package/lib/core/tokens/components/table.css +32 -0
  94. package/lib/core/tokens/components/tabs.css +18 -0
  95. package/lib/core/tokens/components/tag.css +29 -0
  96. package/lib/core/tokens/components/textarea.css +19 -0
  97. package/lib/core/tokens/components/toast.css +22 -0
  98. package/lib/core/tokens/components/toggle-switch.css +17 -0
  99. package/lib/core/tokens/components/toolbar.css +11 -0
  100. package/lib/core/tokens/components/tooltip.css +12 -0
  101. package/lib/core/tokens/components.css +50 -0
  102. package/lib/core/tokens/foundations.css +132 -0
  103. package/lib/core/tokens/primitives.css +159 -0
  104. package/package.json +162 -0
  105. package/styles.css +7 -0
  106. package/types/saitec-ui-autocomplete.d.ts +50 -0
  107. package/types/saitec-ui-badge.d.ts +15 -0
  108. package/types/saitec-ui-button.d.ts +22 -0
  109. package/types/saitec-ui-card.d.ts +13 -0
  110. package/types/saitec-ui-checkbox.d.ts +33 -0
  111. package/types/saitec-ui-chip.d.ts +13 -0
  112. package/types/saitec-ui-confirm.d.ts +38 -0
  113. package/types/saitec-ui-core.d.ts +7 -0
  114. package/types/saitec-ui-date-picker.d.ts +35 -0
  115. package/types/saitec-ui-dialog.d.ts +29 -0
  116. package/types/saitec-ui-divider.d.ts +13 -0
  117. package/types/saitec-ui-drawer.d.ts +31 -0
  118. package/types/saitec-ui-fieldset.d.ts +13 -0
  119. package/types/saitec-ui-file-upload.d.ts +43 -0
  120. package/types/saitec-ui-form-field.d.ts +14 -0
  121. package/types/saitec-ui-input-number.d.ts +60 -0
  122. package/types/saitec-ui-input.d.ts +39 -0
  123. package/types/saitec-ui-menu.d.ts +17 -0
  124. package/types/saitec-ui-menubar.d.ts +21 -0
  125. package/types/saitec-ui-message.d.ts +15 -0
  126. package/types/saitec-ui-multiselect.d.ts +54 -0
  127. package/types/saitec-ui-panel.d.ts +13 -0
  128. package/types/saitec-ui-progress-spinner.d.ts +13 -0
  129. package/types/saitec-ui-select.d.ts +36 -0
  130. package/types/saitec-ui-table.d.ts +57 -0
  131. package/types/saitec-ui-tabs.d.ts +57 -0
  132. package/types/saitec-ui-tag.d.ts +15 -0
  133. package/types/saitec-ui-textarea.d.ts +37 -0
  134. package/types/saitec-ui-toast.d.ts +43 -0
  135. package/types/saitec-ui-toggle-switch.d.ts +32 -0
  136. package/types/saitec-ui-toolbar.d.ts +9 -0
  137. package/types/saitec-ui-tooltip.d.ts +38 -0
  138. package/types/saitec-ui.d.ts +8 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saitec-ui-tabs.mjs","sources":["../../../projects/ui/tabs/src/tabs-context.ts","../../../projects/ui/tabs/src/tabs.component.ts","../../../projects/ui/tabs/src/tabs.component.html","../../../projects/ui/tabs/src/tab.component.ts","../../../projects/ui/tabs/src/tab.component.html","../../../projects/ui/tabs/src/tablist.component.ts","../../../projects/ui/tabs/src/tablist.component.html","../../../projects/ui/tabs/src/tabpanels.component.ts","../../../projects/ui/tabs/src/tabpanels.component.html","../../../projects/ui/tabs/src/tabpanel.component.ts","../../../projects/ui/tabs/src/tabpanel.component.html","../../../projects/ui/tabs/src/saitec-ui-tabs.ts"],"sourcesContent":["import {\r\n InjectionToken\r\n} from '@angular/core';\r\n\r\nexport type SuiTabValue =\r\n | string\r\n | number;\r\n\r\nexport interface SuiTabsContext {\r\n\r\n value(): SuiTabValue | null;\r\n\r\n select(\r\n value: SuiTabValue\r\n ): void;\r\n\r\n isActive(\r\n value: SuiTabValue\r\n ): boolean;\r\n}\r\n\r\nexport const SUI_TABS_CONTEXT =\r\n new InjectionToken<SuiTabsContext>(\r\n 'SUI_TABS_CONTEXT'\r\n );","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n model,\n output\n} from '@angular/core';\n\nimport {\n SUI_TABS_CONTEXT,\n SuiTabsContext,\n SuiTabValue\n} from './tabs-context';\n\n@Component({\n selector: 'sui-tabs',\n standalone: true,\n templateUrl: './tabs.component.html',\n styleUrl: './tabs.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: SUI_TABS_CONTEXT,\n useExisting: forwardRef(\n () => SuiTabs\n )\n }\n ]\n})\nexport class SuiTabs\n implements SuiTabsContext {\n\n value =\n model<SuiTabValue | null>(null);\n\n tabChanged =\n output<SuiTabValue>();\n\n select(\n value: SuiTabValue\n ): void {\n\n if (this.value() === value) {\n return;\n }\n\n this.value.set(value);\n\n this.tabChanged.emit(value);\n }\n\n isActive(\n value: SuiTabValue\n ): boolean {\n return this.value() === value;\n }\n}","<div class=\"sui-tabs\">\n <ng-content />\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n viewChild\n} from '@angular/core';\n\nimport {\n SUI_TABS_CONTEXT,\n SuiTabValue\n} from './tabs-context';\n\n@Component({\n selector: 'sui-tab',\n standalone: true,\n templateUrl: './tab.component.html',\n styleUrl: './tab.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SuiTab {\n\n private readonly tabs =\n inject(SUI_TABS_CONTEXT);\n\n private readonly button =\n viewChild.required<ElementRef<HTMLButtonElement>>(\n 'button'\n );\n\n value =\n input.required<SuiTabValue>();\n\n disabled =\n input(false);\n\n readonly active =\n computed(\n () =>\n this.tabs.isActive(\n this.value()\n )\n );\n\n protected select(): void {\n\n if (this.disabled()) {\n return;\n }\n\n this.tabs.select(\n this.value()\n );\n }\n\n selectAndFocus(): void {\n\n if (this.disabled()) {\n return;\n }\n\n this.select();\n\n this.button()\n .nativeElement\n .focus();\n }\n}","<button\n #button\n type=\"button\"\n class=\"sui-tab\"\n\n [class.sui-tab-active]=\"active()\"\n\n [disabled]=\"disabled()\"\n\n role=\"tab\"\n\n [attr.aria-selected]=\"active()\"\n\n [attr.tabindex]=\"\n active()\n ? 0\n : -1\n \"\n\n (click)=\"select()\">\n\n <ng-content />\n\n</button>","import {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n input\n} from '@angular/core';\n\nimport {\n SuiTab\n} from './tab.component';\n\n@Component({\n selector: 'sui-tablist',\n standalone: true,\n templateUrl: './tablist.component.html',\n styleUrl: './tablist.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SuiTabList {\n\n protected readonly tabs =\n contentChildren(SuiTab);\n\n scrollable = input(false);\n\n protected handleKeyDown(\n event: KeyboardEvent\n ): void {\n\n if (\n event.key !== 'ArrowLeft' &&\n event.key !== 'ArrowRight' &&\n event.key !== 'Home' &&\n event.key !== 'End'\n ) {\n return;\n }\n\n const tabs =\n this.tabs();\n\n if (!tabs.length) {\n return;\n }\n\n const currentIndex =\n tabs.findIndex(\n tab => tab.active()\n );\n\n event.preventDefault();\n\n if (event.key === 'Home') {\n this.focusEnabled(\n 0,\n 1\n );\n\n return;\n }\n\n if (event.key === 'End') {\n this.focusEnabled(\n tabs.length - 1,\n -1\n );\n\n return;\n }\n\n const direction =\n event.key === 'ArrowRight'\n ? 1\n : -1;\n\n let index =\n currentIndex;\n\n if (index < 0) {\n index = 0;\n }\n\n for (\n let attempt = 0;\n attempt < tabs.length;\n attempt++\n ) {\n\n index += direction;\n\n if (index >= tabs.length) {\n index = 0;\n }\n\n if (index < 0) {\n index = tabs.length - 1;\n }\n\n const tab = tabs[index];\n\n if (!tab.disabled()) {\n tab.selectAndFocus();\n return;\n }\n }\n }\n\n private focusEnabled(\n start: number,\n direction: number\n ): void {\n\n const tabs =\n this.tabs();\n\n let index = start;\n\n while (\n index >= 0 &&\n index < tabs.length\n ) {\n\n const tab = tabs[index];\n\n if (!tab.disabled()) {\n tab.selectAndFocus();\n return;\n }\n\n index += direction;\n }\n }\n}","<div\n class=\"sui-tablist\"\n [class.sui-tablist-scrollable]=\"scrollable()\"\n role=\"tablist\"\n (keydown)=\"handleKeyDown($event)\">\n\n <ng-content />\n\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n input\n} from '@angular/core';\n\n@Component({\n selector: 'sui-tabpanels',\n standalone: true,\n templateUrl: './tabpanels.component.html',\n styleUrl: './tabpanels.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SuiTabPanels {\n\n bordered = input(false);\n}","<div\n class=\"sui-tabpanels\"\n [class.sui-tabpanels-bordered]=\"bordered()\">\n\n <ng-content />\n\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input\n} from '@angular/core';\n\nimport {\n SUI_TABS_CONTEXT,\n SuiTabValue\n} from './tabs-context';\n\n@Component({\n selector: 'sui-tabpanel',\n standalone: true,\n templateUrl: './tabpanel.component.html',\n styleUrl: './tabpanel.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SuiTabPanel {\n\n private readonly tabs =\n inject(SUI_TABS_CONTEXT);\n\n value =\n input.required<SuiTabValue>();\n\n protected readonly active =\n computed(\n () =>\n this.tabs.isActive(\n this.value()\n )\n );\n}","@if (active()) {\n\n <div\n class=\"sui-tabpanel\"\n role=\"tabpanel\">\n\n <ng-content />\n\n </div>\n\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, ChangeDetectionStrategy, Component } from '@angular/core';
3
+
4
+ class SuiTag {
5
+ value = input(/* @ts-ignore */
6
+ ...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
7
+ severity = input('primary', /* @ts-ignore */
8
+ ...(ngDevMode ? [{ debugName: "severity" }] : /* istanbul ignore next */ []));
9
+ size = input('medium', /* @ts-ignore */
10
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
11
+ rounded = input(true, /* @ts-ignore */
12
+ ...(ngDevMode ? [{ debugName: "rounded" }] : /* istanbul ignore next */ []));
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: SuiTag, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: SuiTag, isStandalone: true, selector: "sui-tag", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<span\n class=\"sui-tag\"\n [class.sui-tag-primary]=\"severity() === 'primary'\"\n [class.sui-tag-secondary]=\"severity() === 'secondary'\"\n [class.sui-tag-success]=\"severity() === 'success'\"\n [class.sui-tag-info]=\"severity() === 'info'\"\n [class.sui-tag-warning]=\"severity() === 'warning'\"\n [class.sui-tag-danger]=\"severity() === 'danger'\"\n\n [class.sui-tag-small]=\"size() === 'small'\"\n [class.sui-tag-medium]=\"size() === 'medium'\"\n [class.sui-tag-large]=\"size() === 'large'\"\n\n [class.sui-tag-rounded]=\"rounded()\">\n\n <ng-content />\n\n @if (value() !== undefined && value() !== null) {\n {{ value() }}\n }\n\n</span>", styles: [":host{display:inline-flex}.sui-tag{display:inline-flex;align-items:center;justify-content:center;gap:var(--sui-tag-gap);box-sizing:border-box;padding:var(--sui-tag-padding-y-md) var(--sui-tag-padding-x-md);font-family:inherit;font-size:var(--sui-tag-font-size-md);font-weight:var(--sui-tag-font-weight);line-height:1.25;white-space:nowrap;border-radius:var(--sui-tag-radius)}.sui-tag-rounded{border-radius:9999px}.sui-tag-small{padding:var(--sui-tag-padding-y-sm) var(--sui-tag-padding-x-sm);font-size:var(--sui-tag-font-size-sm)}.sui-tag-medium{padding:var(--sui-tag-padding-y-md) var(--sui-tag-padding-x-md);font-size:var(--sui-tag-font-size-md)}.sui-tag-large{padding:var(--sui-tag-padding-y-lg) var(--sui-tag-padding-x-lg);font-size:var(--sui-tag-font-size-lg)}.sui-tag-primary{color:var(--sui-tag-primary-text);background:var(--sui-tag-primary-background)}.sui-tag-secondary{color:var(--sui-tag-secondary-text);background:var(--sui-tag-secondary-background)}.sui-tag-success{color:var(--sui-tag-success-text);background:var(--sui-tag-success-background)}.sui-tag-info{color:var(--sui-tag-info-text);background:var(--sui-tag-info-background)}.sui-tag-warning{color:var(--sui-tag-warning-text);background:var(--sui-tag-warning-background)}.sui-tag-danger{color:var(--sui-tag-danger-text);background:var(--sui-tag-danger-background)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: SuiTag, decorators: [{
17
+ type: Component,
18
+ args: [{ selector: 'sui-tag', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<span\n class=\"sui-tag\"\n [class.sui-tag-primary]=\"severity() === 'primary'\"\n [class.sui-tag-secondary]=\"severity() === 'secondary'\"\n [class.sui-tag-success]=\"severity() === 'success'\"\n [class.sui-tag-info]=\"severity() === 'info'\"\n [class.sui-tag-warning]=\"severity() === 'warning'\"\n [class.sui-tag-danger]=\"severity() === 'danger'\"\n\n [class.sui-tag-small]=\"size() === 'small'\"\n [class.sui-tag-medium]=\"size() === 'medium'\"\n [class.sui-tag-large]=\"size() === 'large'\"\n\n [class.sui-tag-rounded]=\"rounded()\">\n\n <ng-content />\n\n @if (value() !== undefined && value() !== null) {\n {{ value() }}\n }\n\n</span>", styles: [":host{display:inline-flex}.sui-tag{display:inline-flex;align-items:center;justify-content:center;gap:var(--sui-tag-gap);box-sizing:border-box;padding:var(--sui-tag-padding-y-md) var(--sui-tag-padding-x-md);font-family:inherit;font-size:var(--sui-tag-font-size-md);font-weight:var(--sui-tag-font-weight);line-height:1.25;white-space:nowrap;border-radius:var(--sui-tag-radius)}.sui-tag-rounded{border-radius:9999px}.sui-tag-small{padding:var(--sui-tag-padding-y-sm) var(--sui-tag-padding-x-sm);font-size:var(--sui-tag-font-size-sm)}.sui-tag-medium{padding:var(--sui-tag-padding-y-md) var(--sui-tag-padding-x-md);font-size:var(--sui-tag-font-size-md)}.sui-tag-large{padding:var(--sui-tag-padding-y-lg) var(--sui-tag-padding-x-lg);font-size:var(--sui-tag-font-size-lg)}.sui-tag-primary{color:var(--sui-tag-primary-text);background:var(--sui-tag-primary-background)}.sui-tag-secondary{color:var(--sui-tag-secondary-text);background:var(--sui-tag-secondary-background)}.sui-tag-success{color:var(--sui-tag-success-text);background:var(--sui-tag-success-background)}.sui-tag-info{color:var(--sui-tag-info-text);background:var(--sui-tag-info-background)}.sui-tag-warning{color:var(--sui-tag-warning-text);background:var(--sui-tag-warning-background)}.sui-tag-danger{color:var(--sui-tag-danger-text);background:var(--sui-tag-danger-background)}\n"] }]
19
+ }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }] } });
20
+
21
+ /**
22
+ * Generated bundle index. Do not edit.
23
+ */
24
+
25
+ export { SuiTag };
26
+ //# sourceMappingURL=saitec-ui-tag.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saitec-ui-tag.mjs","sources":["../../../projects/ui/tag/src/tag.component.ts","../../../projects/ui/tag/src/tag.component.html","../../../projects/ui/tag/src/saitec-ui-tag.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n input\n} from '@angular/core';\n\nexport type SuiTagSeverity =\n | 'primary'\n | 'secondary'\n | 'success'\n | 'info'\n | 'warning'\n | 'danger';\n\nexport type SuiTagSize =\n | 'small'\n | 'medium'\n | 'large';\n\n@Component({\n selector: 'sui-tag',\n standalone: true,\n templateUrl: './tag.component.html',\n styleUrl: './tag.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SuiTag {\n\n value = input<string | number>();\n\n severity = input<SuiTagSeverity>('primary');\n\n size = input<SuiTagSize>('medium');\n\n rounded = input(true);\n}","<span\n class=\"sui-tag\"\n [class.sui-tag-primary]=\"severity() === 'primary'\"\n [class.sui-tag-secondary]=\"severity() === 'secondary'\"\n [class.sui-tag-success]=\"severity() === 'success'\"\n [class.sui-tag-info]=\"severity() === 'info'\"\n [class.sui-tag-warning]=\"severity() === 'warning'\"\n [class.sui-tag-danger]=\"severity() === 'danger'\"\n\n [class.sui-tag-small]=\"size() === 'small'\"\n [class.sui-tag-medium]=\"size() === 'medium'\"\n [class.sui-tag-large]=\"size() === 'large'\"\n\n [class.sui-tag-rounded]=\"rounded()\">\n\n <ng-content />\n\n @if (value() !== undefined && value() !== null) {\n {{ value() }}\n }\n\n</span>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;MA0Ba,MAAM,CAAA;AAEf,IAAA,KAAK,GAAG,KAAK;yFAAmB;IAEhC,QAAQ,GAAG,KAAK,CAAiB,SAAS;iFAAC;IAE3C,IAAI,GAAG,KAAK,CAAa,QAAQ;6EAAC;IAElC,OAAO,GAAG,KAAK,CAAC,IAAI;gFAAC;uGARZ,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,2jBC1BnB,srBAqBO,EAAA,MAAA,EAAA,CAAA,2zCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDKM,MAAM,EAAA,UAAA,EAAA,CAAA;kBAPlB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,UAAA,EACP,IAAI,EAAA,eAAA,EAGC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,srBAAA,EAAA,MAAA,EAAA,CAAA,2zCAAA,CAAA,EAAA;;;AExBnD;;AAEG;;;;"}
@@ -0,0 +1,95 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, output, signal, computed, forwardRef, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+
5
+ let nextTextareaId = 0;
6
+ class SuiTextarea {
7
+ id = input(`sui-textarea-${++nextTextareaId}`, /* @ts-ignore */
8
+ ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
9
+ name = input(/* @ts-ignore */
10
+ ...(ngDevMode ? [undefined, { debugName: "name" }] : /* istanbul ignore next */ []));
11
+ placeholder = input('', /* @ts-ignore */
12
+ ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
13
+ rows = input(3, /* @ts-ignore */
14
+ ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
15
+ cols = input(/* @ts-ignore */
16
+ ...(ngDevMode ? [undefined, { debugName: "cols" }] : /* istanbul ignore next */ []));
17
+ maxlength = input(/* @ts-ignore */
18
+ ...(ngDevMode ? [undefined, { debugName: "maxlength" }] : /* istanbul ignore next */ []));
19
+ minlength = input(/* @ts-ignore */
20
+ ...(ngDevMode ? [undefined, { debugName: "minlength" }] : /* istanbul ignore next */ []));
21
+ readonly = input(false, /* @ts-ignore */
22
+ ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
23
+ disabled = input(false, /* @ts-ignore */
24
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
25
+ resize = input('vertical', /* @ts-ignore */
26
+ ...(ngDevMode ? [{ debugName: "resize" }] : /* istanbul ignore next */ []));
27
+ ariaLabel = input(/* @ts-ignore */
28
+ ...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
29
+ ariaDescribedBy = input(/* @ts-ignore */
30
+ ...(ngDevMode ? [undefined, { debugName: "ariaDescribedBy" }] : /* istanbul ignore next */ []));
31
+ ariaInvalid = input(/* @ts-ignore */
32
+ ...(ngDevMode ? [undefined, { debugName: "ariaInvalid" }] : /* istanbul ignore next */ []));
33
+ valueChange = output();
34
+ focused = output();
35
+ blurred = output();
36
+ value = signal('', /* @ts-ignore */
37
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
38
+ formDisabled = signal(false, /* @ts-ignore */
39
+ ...(ngDevMode ? [{ debugName: "formDisabled" }] : /* istanbul ignore next */ []));
40
+ isDisabled = computed(() => this.disabled() || this.formDisabled(), /* @ts-ignore */
41
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
42
+ onChange = () => { };
43
+ onTouched = () => { };
44
+ writeValue(value) {
45
+ this.value.set(value ?? '');
46
+ }
47
+ registerOnChange(fn) {
48
+ this.onChange = fn;
49
+ }
50
+ registerOnTouched(fn) {
51
+ this.onTouched = fn;
52
+ }
53
+ setDisabledState(disabled) {
54
+ this.formDisabled.set(disabled);
55
+ }
56
+ handleInput(event) {
57
+ const element = event.target;
58
+ const value = element.value;
59
+ this.value.set(value);
60
+ this.onChange(value);
61
+ this.valueChange.emit(value);
62
+ }
63
+ handleFocus(event) {
64
+ this.focused.emit(event);
65
+ }
66
+ handleBlur(event) {
67
+ this.onTouched();
68
+ this.blurred.emit(event);
69
+ }
70
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: SuiTextarea, deps: [], target: i0.ɵɵFactoryTarget.Component });
71
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.1", type: SuiTextarea, isStandalone: true, selector: "sui-textarea", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, cols: { classPropertyName: "cols", publicName: "cols", isSignal: true, isRequired: false, transformFunction: null }, maxlength: { classPropertyName: "maxlength", publicName: "maxlength", isSignal: true, isRequired: false, transformFunction: null }, minlength: { classPropertyName: "minlength", publicName: "minlength", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, resize: { classPropertyName: "resize", publicName: "resize", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedBy: { classPropertyName: "ariaDescribedBy", publicName: "ariaDescribedBy", isSignal: true, isRequired: false, transformFunction: null }, ariaInvalid: { classPropertyName: "ariaInvalid", publicName: "ariaInvalid", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", focused: "focused", blurred: "blurred" }, providers: [
72
+ {
73
+ provide: NG_VALUE_ACCESSOR,
74
+ useExisting: forwardRef(() => SuiTextarea),
75
+ multi: true
76
+ }
77
+ ], ngImport: i0, template: "<textarea\r\n class=\"sui-textarea\"\r\n\r\n [id]=\"id()\"\r\n [name]=\"name() ?? ''\"\r\n [value]=\"value()\"\r\n\r\n [placeholder]=\"placeholder()\"\r\n\r\n [rows]=\"rows()\"\r\n [attr.cols]=\"cols() ?? null\"\r\n\r\n [disabled]=\"isDisabled()\"\r\n [readOnly]=\"readonly()\"\r\n\r\n [attr.maxlength]=\"maxlength() ?? null\"\r\n [attr.minlength]=\"minlength() ?? null\"\r\n\r\n [attr.aria-label]=\"ariaLabel() ?? null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\r\n [attr.aria-invalid]=\"ariaInvalid() ?? null\"\r\n\r\n [style.resize]=\"resize()\"\r\n\r\n (input)=\"handleInput($event)\"\r\n (focus)=\"handleFocus($event)\"\r\n (blur)=\"handleBlur($event)\">\r\n</textarea>", styles: [":host{display:block;width:100%}.sui-textarea{display:block;width:100%;box-sizing:border-box;padding:var(--sui-textarea-padding-y) var(--sui-textarea-padding-x);font-family:inherit;font-size:var(--sui-control-font-size-md);line-height:1.25rem;color:var(--sui-textarea-text);background:var(--sui-textarea-background);border:var(--sui-textarea-border-width) solid var(--sui-textarea-border);border-radius:var(--sui-textarea-radius);outline:none;transition:border-color var(--sui-duration-normal) var(--sui-easing-standard),box-shadow var(--sui-duration-normal) var(--sui-easing-standard),background-color var(--sui-duration-normal) var(--sui-easing-standard)}.sui-textarea::placeholder{color:var(--sui-textarea-placeholder)}.sui-textarea:hover:not(:disabled):not(:read-only){border-color:var(--sui-textarea-border-hover)}.sui-textarea:focus{border-color:var(--sui-textarea-border-focus);box-shadow:0 0 0 var(--sui-focus-ring-width) var(--sui-textarea-focus-color)}.sui-textarea:disabled{cursor:not-allowed;color:var(--sui-textarea-disabled-text);background:var(--sui-textarea-disabled-background);border-color:var(--sui-color-border)}.sui-textarea:read-only{background:var(--sui-color-surface-alt)}.sui-textarea[aria-invalid=true]{border-color:var(--sui-textarea-border-invalid)}.sui-textarea[aria-invalid=true]:focus{box-shadow:0 0 0 var(--sui-focus-ring-width) var(--sui-color-danger)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: SuiTextarea, decorators: [{
80
+ type: Component,
81
+ args: [{ selector: 'sui-textarea', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
82
+ {
83
+ provide: NG_VALUE_ACCESSOR,
84
+ useExisting: forwardRef(() => SuiTextarea),
85
+ multi: true
86
+ }
87
+ ], template: "<textarea\r\n class=\"sui-textarea\"\r\n\r\n [id]=\"id()\"\r\n [name]=\"name() ?? ''\"\r\n [value]=\"value()\"\r\n\r\n [placeholder]=\"placeholder()\"\r\n\r\n [rows]=\"rows()\"\r\n [attr.cols]=\"cols() ?? null\"\r\n\r\n [disabled]=\"isDisabled()\"\r\n [readOnly]=\"readonly()\"\r\n\r\n [attr.maxlength]=\"maxlength() ?? null\"\r\n [attr.minlength]=\"minlength() ?? null\"\r\n\r\n [attr.aria-label]=\"ariaLabel() ?? null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\r\n [attr.aria-invalid]=\"ariaInvalid() ?? null\"\r\n\r\n [style.resize]=\"resize()\"\r\n\r\n (input)=\"handleInput($event)\"\r\n (focus)=\"handleFocus($event)\"\r\n (blur)=\"handleBlur($event)\">\r\n</textarea>", styles: [":host{display:block;width:100%}.sui-textarea{display:block;width:100%;box-sizing:border-box;padding:var(--sui-textarea-padding-y) var(--sui-textarea-padding-x);font-family:inherit;font-size:var(--sui-control-font-size-md);line-height:1.25rem;color:var(--sui-textarea-text);background:var(--sui-textarea-background);border:var(--sui-textarea-border-width) solid var(--sui-textarea-border);border-radius:var(--sui-textarea-radius);outline:none;transition:border-color var(--sui-duration-normal) var(--sui-easing-standard),box-shadow var(--sui-duration-normal) var(--sui-easing-standard),background-color var(--sui-duration-normal) var(--sui-easing-standard)}.sui-textarea::placeholder{color:var(--sui-textarea-placeholder)}.sui-textarea:hover:not(:disabled):not(:read-only){border-color:var(--sui-textarea-border-hover)}.sui-textarea:focus{border-color:var(--sui-textarea-border-focus);box-shadow:0 0 0 var(--sui-focus-ring-width) var(--sui-textarea-focus-color)}.sui-textarea:disabled{cursor:not-allowed;color:var(--sui-textarea-disabled-text);background:var(--sui-textarea-disabled-background);border-color:var(--sui-color-border)}.sui-textarea:read-only{background:var(--sui-color-surface-alt)}.sui-textarea[aria-invalid=true]{border-color:var(--sui-textarea-border-invalid)}.sui-textarea[aria-invalid=true]:focus{box-shadow:0 0 0 var(--sui-focus-ring-width) var(--sui-color-danger)}\n"] }]
88
+ }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], cols: [{ type: i0.Input, args: [{ isSignal: true, alias: "cols", required: false }] }], maxlength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxlength", required: false }] }], minlength: [{ type: i0.Input, args: [{ isSignal: true, alias: "minlength", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], resize: [{ type: i0.Input, args: [{ isSignal: true, alias: "resize", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedBy", required: false }] }], ariaInvalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaInvalid", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], focused: [{ type: i0.Output, args: ["focused"] }], blurred: [{ type: i0.Output, args: ["blurred"] }] } });
89
+
90
+ /**
91
+ * Generated bundle index. Do not edit.
92
+ */
93
+
94
+ export { SuiTextarea };
95
+ //# sourceMappingURL=saitec-ui-textarea.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saitec-ui-textarea.mjs","sources":["../../../projects/ui/textarea/src/textarea.component.ts","../../../projects/ui/textarea/src/textarea.component.html","../../../projects/ui/textarea/src/saitec-ui-textarea.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n forwardRef,\r\n input,\r\n output,\r\n signal\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR\r\n} from '@angular/forms';\r\n\r\nlet nextTextareaId = 0;\r\n\r\n@Component({\r\n selector: 'sui-textarea',\r\n standalone: true,\r\n templateUrl: './textarea.component.html',\r\n styleUrl: './textarea.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SuiTextarea),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class SuiTextarea implements ControlValueAccessor {\r\n\r\n id = input(`sui-textarea-${++nextTextareaId}`);\r\n\r\n name = input<string>();\r\n\r\n placeholder = input('');\r\n\r\n rows = input(3);\r\n\r\n cols = input<number>();\r\n\r\n maxlength = input<number>();\r\n\r\n minlength = input<number>();\r\n\r\n readonly = input(false);\r\n\r\n disabled = input(false);\r\n\r\n resize = input<'none' | 'both' | 'horizontal' | 'vertical'>('vertical');\r\n\r\n ariaLabel = input<string>();\r\n\r\n ariaDescribedBy = input<string>();\r\n\r\n ariaInvalid = input<boolean>();\r\n\r\n valueChange = output<string>();\r\n\r\n focused = output<FocusEvent>();\r\n\r\n blurred = output<FocusEvent>();\r\n\r\n protected readonly value = signal('');\r\n\r\n private readonly formDisabled = signal(false);\r\n\r\n protected readonly isDisabled = computed(\r\n () => this.disabled() || this.formDisabled()\r\n );\r\n\r\n private onChange: (value: string) => void = () => {};\r\n\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: string | null | undefined): void {\r\n this.value.set(value ?? '');\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.formDisabled.set(disabled);\r\n }\r\n\r\n protected handleInput(event: Event): void {\r\n const element = event.target as HTMLTextAreaElement;\r\n const value = element.value;\r\n\r\n this.value.set(value);\r\n\r\n this.onChange(value);\r\n this.valueChange.emit(value);\r\n }\r\n\r\n protected handleFocus(event: FocusEvent): void {\r\n this.focused.emit(event);\r\n }\r\n\r\n protected handleBlur(event: FocusEvent): void {\r\n this.onTouched();\r\n this.blurred.emit(event);\r\n }\r\n}","<textarea\r\n class=\"sui-textarea\"\r\n\r\n [id]=\"id()\"\r\n [name]=\"name() ?? ''\"\r\n [value]=\"value()\"\r\n\r\n [placeholder]=\"placeholder()\"\r\n\r\n [rows]=\"rows()\"\r\n [attr.cols]=\"cols() ?? null\"\r\n\r\n [disabled]=\"isDisabled()\"\r\n [readOnly]=\"readonly()\"\r\n\r\n [attr.maxlength]=\"maxlength() ?? null\"\r\n [attr.minlength]=\"minlength() ?? null\"\r\n\r\n [attr.aria-label]=\"ariaLabel() ?? null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\r\n [attr.aria-invalid]=\"ariaInvalid() ?? null\"\r\n\r\n [style.resize]=\"resize()\"\r\n\r\n (input)=\"handleInput($event)\"\r\n (focus)=\"handleFocus($event)\"\r\n (blur)=\"handleBlur($event)\">\r\n</textarea>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import * as i0 from '@angular/core';
2
+ import { signal, Injectable, inject, input, effect, ChangeDetectionStrategy, Component } from '@angular/core';
3
+
4
+ let nextToastId = 0;
5
+ class SuiToastService {
6
+ _messages = signal([], /* @ts-ignore */
7
+ ...(ngDevMode ? [{ debugName: "_messages" }] : /* istanbul ignore next */ []));
8
+ messages = this._messages.asReadonly();
9
+ show(severity, detail, options) {
10
+ const id = ++nextToastId;
11
+ const message = {
12
+ id,
13
+ severity,
14
+ detail,
15
+ summary: options?.summary,
16
+ life: options?.life ?? 4000,
17
+ closable: options?.closable ?? true
18
+ };
19
+ this._messages.update(messages => [
20
+ ...messages,
21
+ message
22
+ ]);
23
+ return id;
24
+ }
25
+ success(detail, summary) {
26
+ return this.show('success', detail, {
27
+ summary
28
+ });
29
+ }
30
+ info(detail, summary) {
31
+ return this.show('info', detail, {
32
+ summary
33
+ });
34
+ }
35
+ warning(detail, summary) {
36
+ return this.show('warning', detail, {
37
+ summary
38
+ });
39
+ }
40
+ error(detail, summary) {
41
+ return this.show('danger', detail, {
42
+ summary
43
+ });
44
+ }
45
+ remove(id) {
46
+ this._messages.update(messages => messages.filter(message => message.id !== id));
47
+ }
48
+ clear() {
49
+ this._messages.set([]);
50
+ }
51
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: SuiToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
52
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: SuiToastService, providedIn: 'root' });
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: SuiToastService, decorators: [{
55
+ type: Injectable,
56
+ args: [{
57
+ providedIn: 'root'
58
+ }]
59
+ }] });
60
+
61
+ class SuiToast {
62
+ toast = inject(SuiToastService);
63
+ position = input('top-right', /* @ts-ignore */
64
+ ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
65
+ timers = new Map();
66
+ constructor() {
67
+ effect(() => {
68
+ const messages = this.toast.messages();
69
+ for (const message of messages) {
70
+ if (message.life <= 0 ||
71
+ this.timers.has(message.id)) {
72
+ continue;
73
+ }
74
+ const timer = setTimeout(() => {
75
+ this.remove(message);
76
+ }, message.life);
77
+ this.timers.set(message.id, timer);
78
+ }
79
+ const ids = new Set(messages.map(message => message.id));
80
+ for (const [id, timer] of this.timers) {
81
+ if (!ids.has(id)) {
82
+ clearTimeout(timer);
83
+ this.timers.delete(id);
84
+ }
85
+ }
86
+ });
87
+ }
88
+ remove(message) {
89
+ const timer = this.timers.get(message.id);
90
+ if (timer) {
91
+ clearTimeout(timer);
92
+ this.timers.delete(message.id);
93
+ }
94
+ this.toast.remove(message.id);
95
+ }
96
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: SuiToast, deps: [], target: i0.ɵɵFactoryTarget.Component });
97
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: SuiToast, isStandalone: true, selector: "sui-toast", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"sui-toast-container\"\n [class.sui-toast-top-right]=\"position() === 'top-right'\"\n [class.sui-toast-top-left]=\"position() === 'top-left'\"\n [class.sui-toast-top-center]=\"position() === 'top-center'\"\n [class.sui-toast-bottom-right]=\"position() === 'bottom-right'\"\n [class.sui-toast-bottom-left]=\"position() === 'bottom-left'\"\n [class.sui-toast-bottom-center]=\"position() === 'bottom-center'\"\n aria-live=\"polite\"\n aria-relevant=\"additions\">\n\n @for (\n message of toast.messages();\n track message.id\n ) {\n\n <div\n class=\"sui-toast\"\n [class.sui-toast-success]=\"message.severity === 'success'\"\n [class.sui-toast-info]=\"message.severity === 'info'\"\n [class.sui-toast-warning]=\"message.severity === 'warning'\"\n [class.sui-toast-danger]=\"message.severity === 'danger'\"\n role=\"status\">\n\n <div\n class=\"sui-toast-icon\"\n aria-hidden=\"true\">\n\n @switch (message.severity) {\n\n @case ('success') {\n \u2713\n }\n\n @case ('warning') {\n !\n }\n\n @case ('danger') {\n \u00D7\n }\n\n @default {\n i\n }\n\n }\n\n </div>\n\n <div class=\"sui-toast-content\">\n\n @if (message.summary) {\n <div class=\"sui-toast-summary\">\n {{ message.summary }}\n </div>\n }\n\n <div class=\"sui-toast-detail\">\n {{ message.detail }}\n </div>\n\n </div>\n\n @if (message.closable) {\n <button\n type=\"button\"\n class=\"sui-toast-close\"\n aria-label=\"Close notification\"\n (click)=\"remove(message)\">\n \u00D7\n </button>\n }\n\n </div>\n\n }\n\n</div>", styles: [":host{display:contents}.sui-toast-container{position:fixed;z-index:var(--sui-toast-z-index);display:flex;flex-direction:column;gap:var(--sui-toast-gap);width:min(var(--sui-toast-width),calc(100vw - 2rem));pointer-events:none}.sui-toast-top-right{top:1rem;right:1rem}.sui-toast-top-left{top:1rem;left:1rem}.sui-toast-top-center{top:1rem;left:50%;transform:translate(-50%)}.sui-toast-bottom-right{right:1rem;bottom:1rem}.sui-toast-bottom-left{bottom:1rem;left:1rem}.sui-toast-bottom-center{bottom:1rem;left:50%;transform:translate(-50%)}.sui-toast{display:flex;align-items:flex-start;gap:var(--sui-toast-gap);width:100%;box-sizing:border-box;padding:var(--sui-toast-padding);color:var(--sui-toast-text);background:var(--sui-toast-background);border:var(--sui-toast-border-width) solid;border-radius:var(--sui-toast-radius);box-shadow:var(--sui-toast-shadow);pointer-events:auto}.sui-toast-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.5rem;height:1.5rem;font-size:.875rem;font-weight:700;border:1px solid currentColor;border-radius:50%}.sui-toast-content{flex:1;min-width:0}.sui-toast-summary{margin-bottom:.125rem;font-family:inherit;font-size:.875rem;font-weight:600}.sui-toast-detail{font-family:inherit;font-size:.875rem;line-height:1.25rem}.sui-toast-close{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.75rem;height:1.75rem;padding:0;color:inherit;background:transparent;border:0;border-radius:.375rem;cursor:pointer;font-size:1.125rem}.sui-toast-close:hover{background:var(--sui-color-surface-hover)}.sui-toast-success{border-color:var(--sui-toast-success-border)}.sui-toast-success .sui-toast-icon{color:var(--sui-toast-success-icon)}.sui-toast-info{border-color:var(--sui-toast-info-border)}.sui-toast-info .sui-toast-icon{color:var(--sui-toast-info-icon)}.sui-toast-warning{border-color:var(--sui-toast-warning-border)}.sui-toast-warning .sui-toast-icon{color:var(--sui-toast-warning-icon)}.sui-toast-danger{border-color:var(--sui-toast-danger-border)}.sui-toast-danger .sui-toast-icon{color:var(--sui-toast-danger-icon)}@media(prefers-reduced-motion:no-preference){.sui-toast{animation:sui-toast-enter var(--sui-duration-normal) var(--sui-easing-standard)}}@keyframes sui-toast-enter{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:translateY(0)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
98
+ }
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: SuiToast, decorators: [{
100
+ type: Component,
101
+ args: [{ selector: 'sui-toast', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"sui-toast-container\"\n [class.sui-toast-top-right]=\"position() === 'top-right'\"\n [class.sui-toast-top-left]=\"position() === 'top-left'\"\n [class.sui-toast-top-center]=\"position() === 'top-center'\"\n [class.sui-toast-bottom-right]=\"position() === 'bottom-right'\"\n [class.sui-toast-bottom-left]=\"position() === 'bottom-left'\"\n [class.sui-toast-bottom-center]=\"position() === 'bottom-center'\"\n aria-live=\"polite\"\n aria-relevant=\"additions\">\n\n @for (\n message of toast.messages();\n track message.id\n ) {\n\n <div\n class=\"sui-toast\"\n [class.sui-toast-success]=\"message.severity === 'success'\"\n [class.sui-toast-info]=\"message.severity === 'info'\"\n [class.sui-toast-warning]=\"message.severity === 'warning'\"\n [class.sui-toast-danger]=\"message.severity === 'danger'\"\n role=\"status\">\n\n <div\n class=\"sui-toast-icon\"\n aria-hidden=\"true\">\n\n @switch (message.severity) {\n\n @case ('success') {\n \u2713\n }\n\n @case ('warning') {\n !\n }\n\n @case ('danger') {\n \u00D7\n }\n\n @default {\n i\n }\n\n }\n\n </div>\n\n <div class=\"sui-toast-content\">\n\n @if (message.summary) {\n <div class=\"sui-toast-summary\">\n {{ message.summary }}\n </div>\n }\n\n <div class=\"sui-toast-detail\">\n {{ message.detail }}\n </div>\n\n </div>\n\n @if (message.closable) {\n <button\n type=\"button\"\n class=\"sui-toast-close\"\n aria-label=\"Close notification\"\n (click)=\"remove(message)\">\n \u00D7\n </button>\n }\n\n </div>\n\n }\n\n</div>", styles: [":host{display:contents}.sui-toast-container{position:fixed;z-index:var(--sui-toast-z-index);display:flex;flex-direction:column;gap:var(--sui-toast-gap);width:min(var(--sui-toast-width),calc(100vw - 2rem));pointer-events:none}.sui-toast-top-right{top:1rem;right:1rem}.sui-toast-top-left{top:1rem;left:1rem}.sui-toast-top-center{top:1rem;left:50%;transform:translate(-50%)}.sui-toast-bottom-right{right:1rem;bottom:1rem}.sui-toast-bottom-left{bottom:1rem;left:1rem}.sui-toast-bottom-center{bottom:1rem;left:50%;transform:translate(-50%)}.sui-toast{display:flex;align-items:flex-start;gap:var(--sui-toast-gap);width:100%;box-sizing:border-box;padding:var(--sui-toast-padding);color:var(--sui-toast-text);background:var(--sui-toast-background);border:var(--sui-toast-border-width) solid;border-radius:var(--sui-toast-radius);box-shadow:var(--sui-toast-shadow);pointer-events:auto}.sui-toast-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.5rem;height:1.5rem;font-size:.875rem;font-weight:700;border:1px solid currentColor;border-radius:50%}.sui-toast-content{flex:1;min-width:0}.sui-toast-summary{margin-bottom:.125rem;font-family:inherit;font-size:.875rem;font-weight:600}.sui-toast-detail{font-family:inherit;font-size:.875rem;line-height:1.25rem}.sui-toast-close{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.75rem;height:1.75rem;padding:0;color:inherit;background:transparent;border:0;border-radius:.375rem;cursor:pointer;font-size:1.125rem}.sui-toast-close:hover{background:var(--sui-color-surface-hover)}.sui-toast-success{border-color:var(--sui-toast-success-border)}.sui-toast-success .sui-toast-icon{color:var(--sui-toast-success-icon)}.sui-toast-info{border-color:var(--sui-toast-info-border)}.sui-toast-info .sui-toast-icon{color:var(--sui-toast-info-icon)}.sui-toast-warning{border-color:var(--sui-toast-warning-border)}.sui-toast-warning .sui-toast-icon{color:var(--sui-toast-warning-icon)}.sui-toast-danger{border-color:var(--sui-toast-danger-border)}.sui-toast-danger .sui-toast-icon{color:var(--sui-toast-danger-icon)}@media(prefers-reduced-motion:no-preference){.sui-toast{animation:sui-toast-enter var(--sui-duration-normal) var(--sui-easing-standard)}}@keyframes sui-toast-enter{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:translateY(0)}}\n"] }]
102
+ }], ctorParameters: () => [], propDecorators: { position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }] } });
103
+
104
+ /**
105
+ * Generated bundle index. Do not edit.
106
+ */
107
+
108
+ export { SuiToast, SuiToastService };
109
+ //# sourceMappingURL=saitec-ui-toast.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saitec-ui-toast.mjs","sources":["../../../projects/ui/toast/src/toast.service.ts","../../../projects/ui/toast/src/toast.component.ts","../../../projects/ui/toast/src/toast.component.html","../../../projects/ui/toast/src/saitec-ui-toast.ts"],"sourcesContent":["import {\r\n Injectable,\r\n signal\r\n} from '@angular/core';\r\n\r\nexport type SuiToastSeverity =\r\n | 'success'\r\n | 'info'\r\n | 'warning'\r\n | 'danger';\r\n\r\nexport interface SuiToastMessage {\r\n id: number;\r\n\r\n severity: SuiToastSeverity;\r\n\r\n summary?: string;\r\n\r\n detail: string;\r\n\r\n life: number;\r\n\r\n closable: boolean;\r\n}\r\n\r\nexport interface SuiToastOptions {\r\n summary?: string;\r\n\r\n life?: number;\r\n\r\n closable?: boolean;\r\n}\r\n\r\nlet nextToastId = 0;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SuiToastService {\r\n\r\n private readonly _messages =\r\n signal<SuiToastMessage[]>([]);\r\n\r\n readonly messages =\r\n this._messages.asReadonly();\r\n\r\n show(\r\n severity: SuiToastSeverity,\r\n detail: string,\r\n options?: SuiToastOptions\r\n ): number {\r\n\r\n const id = ++nextToastId;\r\n\r\n const message: SuiToastMessage = {\r\n id,\r\n severity,\r\n detail,\r\n summary: options?.summary,\r\n life: options?.life ?? 4000,\r\n closable: options?.closable ?? true\r\n };\r\n\r\n this._messages.update(messages => [\r\n ...messages,\r\n message\r\n ]);\r\n\r\n return id;\r\n }\r\n\r\n success(\r\n detail: string,\r\n summary?: string\r\n ): number {\r\n return this.show(\r\n 'success',\r\n detail,\r\n {\r\n summary\r\n }\r\n );\r\n }\r\n\r\n info(\r\n detail: string,\r\n summary?: string\r\n ): number {\r\n return this.show(\r\n 'info',\r\n detail,\r\n {\r\n summary\r\n }\r\n );\r\n }\r\n\r\n warning(\r\n detail: string,\r\n summary?: string\r\n ): number {\r\n return this.show(\r\n 'warning',\r\n detail,\r\n {\r\n summary\r\n }\r\n );\r\n }\r\n\r\n error(\r\n detail: string,\r\n summary?: string\r\n ): number {\r\n return this.show(\r\n 'danger',\r\n detail,\r\n {\r\n summary\r\n }\r\n );\r\n }\r\n\r\n remove(id: number): void {\r\n this._messages.update(messages =>\r\n messages.filter(\r\n message => message.id !== id\r\n )\r\n );\r\n }\r\n\r\n clear(): void {\r\n this._messages.set([]);\r\n }\r\n}","import {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input\n} from '@angular/core';\n\nimport {\n SuiToastMessage,\n SuiToastService\n} from './toast.service';\n\nexport type SuiToastPosition =\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center';\n\n@Component({\n selector: 'sui-toast',\n standalone: true,\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SuiToast {\n\n protected readonly toast =\n inject(SuiToastService);\n\n position =\n input<SuiToastPosition>('top-right');\n\n private readonly timers =\n new Map<number, ReturnType<typeof setTimeout>>();\n\n constructor() {\n\n effect(() => {\n\n const messages =\n this.toast.messages();\n\n for (const message of messages) {\n\n if (\n message.life <= 0 ||\n this.timers.has(message.id)\n ) {\n continue;\n }\n\n const timer =\n setTimeout(\n () => {\n this.remove(message);\n },\n message.life\n );\n\n this.timers.set(\n message.id,\n timer\n );\n }\n\n const ids =\n new Set(\n messages.map(\n message => message.id\n )\n );\n\n for (\n const [id, timer]\n of this.timers\n ) {\n\n if (!ids.has(id)) {\n clearTimeout(timer);\n this.timers.delete(id);\n }\n }\n\n });\n\n }\n\n protected remove(\n message: SuiToastMessage\n ): void {\n\n const timer =\n this.timers.get(message.id);\n\n if (timer) {\n clearTimeout(timer);\n this.timers.delete(message.id);\n }\n\n this.toast.remove(message.id);\n }\n}","<div\n class=\"sui-toast-container\"\n [class.sui-toast-top-right]=\"position() === 'top-right'\"\n [class.sui-toast-top-left]=\"position() === 'top-left'\"\n [class.sui-toast-top-center]=\"position() === 'top-center'\"\n [class.sui-toast-bottom-right]=\"position() === 'bottom-right'\"\n [class.sui-toast-bottom-left]=\"position() === 'bottom-left'\"\n [class.sui-toast-bottom-center]=\"position() === 'bottom-center'\"\n aria-live=\"polite\"\n aria-relevant=\"additions\">\n\n @for (\n message of toast.messages();\n track message.id\n ) {\n\n <div\n class=\"sui-toast\"\n [class.sui-toast-success]=\"message.severity === 'success'\"\n [class.sui-toast-info]=\"message.severity === 'info'\"\n [class.sui-toast-warning]=\"message.severity === 'warning'\"\n [class.sui-toast-danger]=\"message.severity === 'danger'\"\n role=\"status\">\n\n <div\n class=\"sui-toast-icon\"\n aria-hidden=\"true\">\n\n @switch (message.severity) {\n\n @case ('success') {\n ✓\n }\n\n @case ('warning') {\n !\n }\n\n @case ('danger') {\n ×\n }\n\n @default {\n i\n }\n\n }\n\n </div>\n\n <div class=\"sui-toast-content\">\n\n @if (message.summary) {\n <div class=\"sui-toast-summary\">\n {{ message.summary }}\n </div>\n }\n\n <div class=\"sui-toast-detail\">\n {{ message.detail }}\n </div>\n\n </div>\n\n @if (message.closable) {\n <button\n type=\"button\"\n class=\"sui-toast-close\"\n aria-label=\"Close notification\"\n (click)=\"remove(message)\">\n ×\n </button>\n }\n\n </div>\n\n }\n\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, output, signal, computed, forwardRef, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+
5
+ let nextToggleSwitchId = 0;
6
+ class SuiToggleSwitch {
7
+ id = input(`sui-toggle-switch-${++nextToggleSwitchId}`, /* @ts-ignore */
8
+ ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
9
+ name = input(/* @ts-ignore */
10
+ ...(ngDevMode ? [undefined, { debugName: "name" }] : /* istanbul ignore next */ []));
11
+ label = input(/* @ts-ignore */
12
+ ...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
13
+ disabled = input(false, /* @ts-ignore */
14
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
15
+ required = input(false, /* @ts-ignore */
16
+ ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
17
+ ariaLabel = input(/* @ts-ignore */
18
+ ...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
19
+ ariaDescribedBy = input(/* @ts-ignore */
20
+ ...(ngDevMode ? [undefined, { debugName: "ariaDescribedBy" }] : /* istanbul ignore next */ []));
21
+ ariaInvalid = input(/* @ts-ignore */
22
+ ...(ngDevMode ? [undefined, { debugName: "ariaInvalid" }] : /* istanbul ignore next */ []));
23
+ valueChange = output();
24
+ focused = output();
25
+ blurred = output();
26
+ checked = signal(false, /* @ts-ignore */
27
+ ...(ngDevMode ? [{ debugName: "checked" }] : /* istanbul ignore next */ []));
28
+ formDisabled = signal(false, /* @ts-ignore */
29
+ ...(ngDevMode ? [{ debugName: "formDisabled" }] : /* istanbul ignore next */ []));
30
+ isDisabled = computed(() => this.disabled() || this.formDisabled(), /* @ts-ignore */
31
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
32
+ onChange = () => { };
33
+ onTouched = () => { };
34
+ writeValue(value) {
35
+ this.checked.set(value ?? false);
36
+ }
37
+ registerOnChange(fn) {
38
+ this.onChange = fn;
39
+ }
40
+ registerOnTouched(fn) {
41
+ this.onTouched = fn;
42
+ }
43
+ setDisabledState(disabled) {
44
+ this.formDisabled.set(disabled);
45
+ }
46
+ handleChange(event) {
47
+ const element = event.target;
48
+ const value = element.checked;
49
+ this.checked.set(value);
50
+ this.onChange(value);
51
+ this.valueChange.emit(value);
52
+ }
53
+ handleFocus(event) {
54
+ this.focused.emit(event);
55
+ }
56
+ handleBlur(event) {
57
+ this.onTouched();
58
+ this.blurred.emit(event);
59
+ }
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: SuiToggleSwitch, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: SuiToggleSwitch, isStandalone: true, selector: "sui-toggle-switch", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedBy: { classPropertyName: "ariaDescribedBy", publicName: "ariaDescribedBy", isSignal: true, isRequired: false, transformFunction: null }, ariaInvalid: { classPropertyName: "ariaInvalid", publicName: "ariaInvalid", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", focused: "focused", blurred: "blurred" }, providers: [
62
+ {
63
+ provide: NG_VALUE_ACCESSOR,
64
+ useExisting: forwardRef(() => SuiToggleSwitch),
65
+ multi: true
66
+ }
67
+ ], ngImport: i0, template: "<div class=\"sui-toggle-switch-container\">\n\n <input\n class=\"sui-toggle-switch-input\"\n\n type=\"checkbox\"\n role=\"switch\"\n\n [id]=\"id()\"\n [name]=\"name() ?? ''\"\n\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\n [attr.aria-invalid]=\"ariaInvalid() ?? null\"\n [attr.aria-checked]=\"checked()\"\n\n (change)=\"handleChange($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n />\n\n <label\n class=\"sui-toggle-switch-control\"\n [for]=\"id()\">\n\n <span class=\"sui-toggle-switch-slider\"></span>\n\n </label>\n\n @if (label()) {\n <label\n class=\"sui-toggle-switch-label\"\n [for]=\"id()\">\n {{ label() }}\n </label>\n }\n\n</div>", styles: [":host{display:inline-flex}.sui-toggle-switch-container{display:inline-flex;align-items:center;gap:.5rem}.sui-toggle-switch-input{position:absolute;width:1px;height:1px;margin:0;padding:0;opacity:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.sui-toggle-switch-control{position:relative;display:inline-block;width:var(--sui-toggle-switch-width);height:var(--sui-toggle-switch-height);flex-shrink:0;cursor:pointer}.sui-toggle-switch-slider{position:absolute;inset:0;background:var(--sui-toggle-switch-background);border-radius:9999px;transition:background-color var(--sui-duration-normal) var(--sui-easing-standard),box-shadow var(--sui-duration-normal) var(--sui-easing-standard)}.sui-toggle-switch-slider:before{content:\"\";position:absolute;top:var(--sui-toggle-switch-padding);left:var(--sui-toggle-switch-padding);width:calc(var(--sui-toggle-switch-height) - (var(--sui-toggle-switch-padding) * 2));height:calc(var(--sui-toggle-switch-height) - (var(--sui-toggle-switch-padding) * 2));background:var(--sui-toggle-switch-thumb-background);border-radius:50%;box-shadow:var(--sui-shadow-xs);transition:transform var(--sui-duration-normal) var(--sui-easing-standard)}.sui-toggle-switch-input:checked+.sui-toggle-switch-control .sui-toggle-switch-slider{background:var(--sui-toggle-switch-checked-background)}.sui-toggle-switch-input:checked+.sui-toggle-switch-control .sui-toggle-switch-slider:before{transform:translate(calc(var(--sui-toggle-switch-width) - var(--sui-toggle-switch-height)))}.sui-toggle-switch-input:focus-visible+.sui-toggle-switch-control .sui-toggle-switch-slider{box-shadow:0 0 0 var(--sui-focus-ring-width) var(--sui-toggle-switch-focus-color)}.sui-toggle-switch-input:disabled+.sui-toggle-switch-control{cursor:not-allowed;opacity:var(--sui-toggle-switch-disabled-opacity)}.sui-toggle-switch-label{cursor:pointer;font-family:inherit;font-size:var(--sui-control-font-size-md);color:var(--sui-toggle-switch-label-text);-webkit-user-select:none;user-select:none}.sui-toggle-switch-input:disabled~.sui-toggle-switch-label{cursor:not-allowed;color:var(--sui-color-content-disabled)}.sui-toggle-switch-input[aria-invalid=true]+.sui-toggle-switch-control .sui-toggle-switch-slider{box-shadow:0 0 0 var(--sui-focus-ring-width) var(--sui-color-danger)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
68
+ }
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: SuiToggleSwitch, decorators: [{
70
+ type: Component,
71
+ args: [{ selector: 'sui-toggle-switch', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
72
+ {
73
+ provide: NG_VALUE_ACCESSOR,
74
+ useExisting: forwardRef(() => SuiToggleSwitch),
75
+ multi: true
76
+ }
77
+ ], template: "<div class=\"sui-toggle-switch-container\">\n\n <input\n class=\"sui-toggle-switch-input\"\n\n type=\"checkbox\"\n role=\"switch\"\n\n [id]=\"id()\"\n [name]=\"name() ?? ''\"\n\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\n [attr.aria-invalid]=\"ariaInvalid() ?? null\"\n [attr.aria-checked]=\"checked()\"\n\n (change)=\"handleChange($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n />\n\n <label\n class=\"sui-toggle-switch-control\"\n [for]=\"id()\">\n\n <span class=\"sui-toggle-switch-slider\"></span>\n\n </label>\n\n @if (label()) {\n <label\n class=\"sui-toggle-switch-label\"\n [for]=\"id()\">\n {{ label() }}\n </label>\n }\n\n</div>", styles: [":host{display:inline-flex}.sui-toggle-switch-container{display:inline-flex;align-items:center;gap:.5rem}.sui-toggle-switch-input{position:absolute;width:1px;height:1px;margin:0;padding:0;opacity:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.sui-toggle-switch-control{position:relative;display:inline-block;width:var(--sui-toggle-switch-width);height:var(--sui-toggle-switch-height);flex-shrink:0;cursor:pointer}.sui-toggle-switch-slider{position:absolute;inset:0;background:var(--sui-toggle-switch-background);border-radius:9999px;transition:background-color var(--sui-duration-normal) var(--sui-easing-standard),box-shadow var(--sui-duration-normal) var(--sui-easing-standard)}.sui-toggle-switch-slider:before{content:\"\";position:absolute;top:var(--sui-toggle-switch-padding);left:var(--sui-toggle-switch-padding);width:calc(var(--sui-toggle-switch-height) - (var(--sui-toggle-switch-padding) * 2));height:calc(var(--sui-toggle-switch-height) - (var(--sui-toggle-switch-padding) * 2));background:var(--sui-toggle-switch-thumb-background);border-radius:50%;box-shadow:var(--sui-shadow-xs);transition:transform var(--sui-duration-normal) var(--sui-easing-standard)}.sui-toggle-switch-input:checked+.sui-toggle-switch-control .sui-toggle-switch-slider{background:var(--sui-toggle-switch-checked-background)}.sui-toggle-switch-input:checked+.sui-toggle-switch-control .sui-toggle-switch-slider:before{transform:translate(calc(var(--sui-toggle-switch-width) - var(--sui-toggle-switch-height)))}.sui-toggle-switch-input:focus-visible+.sui-toggle-switch-control .sui-toggle-switch-slider{box-shadow:0 0 0 var(--sui-focus-ring-width) var(--sui-toggle-switch-focus-color)}.sui-toggle-switch-input:disabled+.sui-toggle-switch-control{cursor:not-allowed;opacity:var(--sui-toggle-switch-disabled-opacity)}.sui-toggle-switch-label{cursor:pointer;font-family:inherit;font-size:var(--sui-control-font-size-md);color:var(--sui-toggle-switch-label-text);-webkit-user-select:none;user-select:none}.sui-toggle-switch-input:disabled~.sui-toggle-switch-label{cursor:not-allowed;color:var(--sui-color-content-disabled)}.sui-toggle-switch-input[aria-invalid=true]+.sui-toggle-switch-control .sui-toggle-switch-slider{box-shadow:0 0 0 var(--sui-focus-ring-width) var(--sui-color-danger)}\n"] }]
78
+ }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedBy", required: false }] }], ariaInvalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaInvalid", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], focused: [{ type: i0.Output, args: ["focused"] }], blurred: [{ type: i0.Output, args: ["blurred"] }] } });
79
+
80
+ /**
81
+ * Generated bundle index. Do not edit.
82
+ */
83
+
84
+ export { SuiToggleSwitch };
85
+ //# sourceMappingURL=saitec-ui-toggle-switch.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saitec-ui-toggle-switch.mjs","sources":["../../../projects/ui/toggle-switch/src/toggle-switch.component.ts","../../../projects/ui/toggle-switch/src/toggle-switch.component.html","../../../projects/ui/toggle-switch/src/saitec-ui-toggle-switch.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n output,\n signal\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR\n} from '@angular/forms';\n\nlet nextToggleSwitchId = 0;\n\n@Component({\n selector: 'sui-toggle-switch',\n standalone: true,\n templateUrl: './toggle-switch.component.html',\n styleUrl: './toggle-switch.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SuiToggleSwitch),\n multi: true\n }\n ]\n})\nexport class SuiToggleSwitch implements ControlValueAccessor {\n\n id = input(`sui-toggle-switch-${++nextToggleSwitchId}`);\n\n name = input<string>();\n\n label = input<string>();\n\n disabled = input(false);\n\n required = input(false);\n\n ariaLabel = input<string>();\n\n ariaDescribedBy = input<string>();\n\n ariaInvalid = input<boolean>();\n\n valueChange = output<boolean>();\n\n focused = output<FocusEvent>();\n\n blurred = output<FocusEvent>();\n\n protected readonly checked = signal(false);\n\n private readonly formDisabled = signal(false);\n\n protected readonly isDisabled = computed(\n () => this.disabled() || this.formDisabled()\n );\n\n private onChange: (value: boolean) => void = () => {};\n\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean | null | undefined): void {\n this.checked.set(value ?? false);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.formDisabled.set(disabled);\n }\n\n protected handleChange(event: Event): void {\n const element = event.target as HTMLInputElement;\n const value = element.checked;\n\n this.checked.set(value);\n\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n protected handleFocus(event: FocusEvent): void {\n this.focused.emit(event);\n }\n\n protected handleBlur(event: FocusEvent): void {\n this.onTouched();\n this.blurred.emit(event);\n }\n}","<div class=\"sui-toggle-switch-container\">\n\n <input\n class=\"sui-toggle-switch-input\"\n\n type=\"checkbox\"\n role=\"switch\"\n\n [id]=\"id()\"\n [name]=\"name() ?? ''\"\n\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\n [attr.aria-invalid]=\"ariaInvalid() ?? null\"\n [attr.aria-checked]=\"checked()\"\n\n (change)=\"handleChange($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n />\n\n <label\n class=\"sui-toggle-switch-control\"\n [for]=\"id()\">\n\n <span class=\"sui-toggle-switch-slider\"></span>\n\n </label>\n\n @if (label()) {\n <label\n class=\"sui-toggle-switch-label\"\n [for]=\"id()\">\n {{ label() }}\n </label>\n }\n\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, ChangeDetectionStrategy, Component } from '@angular/core';
3
+
4
+ class SuiToolbar {
5
+ bordered = input(true, /* @ts-ignore */
6
+ ...(ngDevMode ? [{ debugName: "bordered" }] : /* istanbul ignore next */ []));
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: SuiToolbar, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.1", type: SuiToolbar, isStandalone: true, selector: "sui-toolbar", inputs: { bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"sui-toolbar\"\n [class.sui-toolbar-bordered]=\"bordered()\"\n role=\"toolbar\">\n\n <div class=\"sui-toolbar-start\">\n <ng-content select=\"[suiToolbarStart]\" />\n </div>\n\n <div class=\"sui-toolbar-center\">\n <ng-content select=\"[suiToolbarCenter]\" />\n </div>\n\n <div class=\"sui-toolbar-end\">\n <ng-content select=\"[suiToolbarEnd]\" />\n </div>\n\n</div>", styles: [":host{display:block;width:100%}.sui-toolbar{display:flex;align-items:center;width:100%;min-height:var(--sui-control-height-lg);padding:var(--sui-toolbar-padding);box-sizing:border-box;color:var(--sui-toolbar-text);background:var(--sui-toolbar-background);border-radius:var(--sui-toolbar-radius)}.sui-toolbar-bordered{border:var(--sui-toolbar-border-width) solid var(--sui-toolbar-border)}.sui-toolbar-start,.sui-toolbar-center,.sui-toolbar-end{display:flex;align-items:center;gap:var(--sui-toolbar-gap);min-width:0}.sui-toolbar-start{justify-content:flex-start}.sui-toolbar-center{justify-content:center;flex:1}.sui-toolbar-end{justify-content:flex-end;margin-left:auto}.sui-toolbar-start:empty,.sui-toolbar-center:empty,.sui-toolbar-end:empty{display:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: SuiToolbar, decorators: [{
11
+ type: Component,
12
+ args: [{ selector: 'sui-toolbar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"sui-toolbar\"\n [class.sui-toolbar-bordered]=\"bordered()\"\n role=\"toolbar\">\n\n <div class=\"sui-toolbar-start\">\n <ng-content select=\"[suiToolbarStart]\" />\n </div>\n\n <div class=\"sui-toolbar-center\">\n <ng-content select=\"[suiToolbarCenter]\" />\n </div>\n\n <div class=\"sui-toolbar-end\">\n <ng-content select=\"[suiToolbarEnd]\" />\n </div>\n\n</div>", styles: [":host{display:block;width:100%}.sui-toolbar{display:flex;align-items:center;width:100%;min-height:var(--sui-control-height-lg);padding:var(--sui-toolbar-padding);box-sizing:border-box;color:var(--sui-toolbar-text);background:var(--sui-toolbar-background);border-radius:var(--sui-toolbar-radius)}.sui-toolbar-bordered{border:var(--sui-toolbar-border-width) solid var(--sui-toolbar-border)}.sui-toolbar-start,.sui-toolbar-center,.sui-toolbar-end{display:flex;align-items:center;gap:var(--sui-toolbar-gap);min-width:0}.sui-toolbar-start{justify-content:flex-start}.sui-toolbar-center{justify-content:center;flex:1}.sui-toolbar-end{justify-content:flex-end;margin-left:auto}.sui-toolbar-start:empty,.sui-toolbar-center:empty,.sui-toolbar-end:empty{display:none}\n"] }]
13
+ }], propDecorators: { bordered: [{ type: i0.Input, args: [{ isSignal: true, alias: "bordered", required: false }] }] } });
14
+
15
+ /**
16
+ * Generated bundle index. Do not edit.
17
+ */
18
+
19
+ export { SuiToolbar };
20
+ //# sourceMappingURL=saitec-ui-toolbar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saitec-ui-toolbar.mjs","sources":["../../../projects/ui/toolbar/src/toolbar.component.ts","../../../projects/ui/toolbar/src/toolbar.component.html","../../../projects/ui/toolbar/src/saitec-ui-toolbar.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n input\n} from '@angular/core';\n\n@Component({\n selector: 'sui-toolbar',\n standalone: true,\n templateUrl: './toolbar.component.html',\n styleUrl: './toolbar.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SuiToolbar {\n bordered = input(true);\n}","<div\n class=\"sui-toolbar\"\n [class.sui-toolbar-bordered]=\"bordered()\"\n role=\"toolbar\">\n\n <div class=\"sui-toolbar-start\">\n <ng-content select=\"[suiToolbarStart]\" />\n </div>\n\n <div class=\"sui-toolbar-center\">\n <ng-content select=\"[suiToolbarCenter]\" />\n </div>\n\n <div class=\"sui-toolbar-end\">\n <ng-content select=\"[suiToolbarEnd]\" />\n </div>\n\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;MAaa,UAAU,CAAA;IACrB,QAAQ,GAAG,KAAK,CAAC,IAAI;iFAAC;uGADX,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,oNCbvB,+aAiBM,EAAA,MAAA,EAAA,CAAA,yvBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDJO,UAAU,EAAA,UAAA,EAAA,CAAA;kBAPtB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,eAAA,EAGC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+aAAA,EAAA,MAAA,EAAA,CAAA,yvBAAA,CAAA,EAAA;;;AEXnD;;AAEG;;;;"}