@zanichelli/albe-web-components 18.3.3-RC1 → 18.3.3

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 (113) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/z-app-header_12.cjs.entry.js +4 -4
  3. package/dist/cjs/z-app-header_12.cjs.entry.js.map +1 -1
  4. package/dist/cjs/z-combobox.cjs.entry.js +1 -1
  5. package/dist/cjs/z-combobox.cjs.entry.js.map +1 -1
  6. package/dist/cjs/z-info-reveal.cjs.entry.js +1 -1
  7. package/dist/cjs/z-info-reveal.cjs.entry.js.map +1 -1
  8. package/dist/cjs/z-pagination.cjs.entry.js +11 -8
  9. package/dist/cjs/z-pagination.cjs.entry.js.map +1 -1
  10. package/dist/cjs/z-select.cjs.entry.js +2 -2
  11. package/dist/cjs/z-select.cjs.entry.js.map +1 -1
  12. package/dist/cjs/z-toast-notification.cjs.entry.js +7 -43
  13. package/dist/cjs/z-toast-notification.cjs.entry.js.map +1 -1
  14. package/dist/collection/components/css-components/z-label/index.stories.js +10 -0
  15. package/dist/collection/components/css-components/z-label/index.stories.js.map +1 -0
  16. package/dist/collection/components/z-combobox/styles.css +13 -1
  17. package/dist/collection/components/z-info-reveal/styles.css +2 -5
  18. package/dist/collection/components/z-input/index.js +3 -3
  19. package/dist/collection/components/z-input/index.js.map +1 -1
  20. package/dist/collection/components/z-input/index.stories.js +48 -52
  21. package/dist/collection/components/z-input/index.stories.js.map +1 -1
  22. package/dist/collection/components/z-input/styles.css +1 -13
  23. package/dist/collection/components/z-pagination/index.js +12 -7
  24. package/dist/collection/components/z-pagination/index.js.map +1 -1
  25. package/dist/collection/components/z-pagination/index.stories.js +31 -13
  26. package/dist/collection/components/z-pagination/index.stories.js.map +1 -1
  27. package/dist/collection/components/z-pagination/styles.css +4 -8
  28. package/dist/collection/components/z-select/index.js +2 -2
  29. package/dist/collection/components/z-select/index.js.map +1 -1
  30. package/dist/collection/components/z-select/index.stories.js +1 -0
  31. package/dist/collection/components/z-select/index.stories.js.map +1 -1
  32. package/dist/collection/components/z-toast-notification/index.js +7 -43
  33. package/dist/collection/components/z-toast-notification/index.js.map +1 -1
  34. package/dist/collection/components/z-toast-notification/index.stories.js +30 -2
  35. package/dist/collection/components/z-toast-notification/index.stories.js.map +1 -1
  36. package/dist/collection/components/z-toast-notification/styles.css +25 -34
  37. package/dist/components/index10.js +1 -1
  38. package/dist/components/index10.js.map +1 -1
  39. package/dist/components/index11.js +4 -4
  40. package/dist/components/index11.js.map +1 -1
  41. package/dist/components/z-combobox.js +1 -1
  42. package/dist/components/z-combobox.js.map +1 -1
  43. package/dist/components/z-pagination.js +11 -8
  44. package/dist/components/z-pagination.js.map +1 -1
  45. package/dist/components/z-select.js +2 -2
  46. package/dist/components/z-select.js.map +1 -1
  47. package/dist/components/z-toast-notification.js +8 -44
  48. package/dist/components/z-toast-notification.js.map +1 -1
  49. package/dist/esm/z-app-header_12.entry.js +4 -4
  50. package/dist/esm/z-app-header_12.entry.js.map +1 -1
  51. package/dist/esm/z-combobox.entry.js +1 -1
  52. package/dist/esm/z-combobox.entry.js.map +1 -1
  53. package/dist/esm/z-info-reveal.entry.js +1 -1
  54. package/dist/esm/z-info-reveal.entry.js.map +1 -1
  55. package/dist/esm/z-pagination.entry.js +11 -8
  56. package/dist/esm/z-pagination.entry.js.map +1 -1
  57. package/dist/esm/z-select.entry.js +2 -2
  58. package/dist/esm/z-select.entry.js.map +1 -1
  59. package/dist/esm/z-toast-notification.entry.js +8 -44
  60. package/dist/esm/z-toast-notification.entry.js.map +1 -1
  61. package/dist/types/components/css-components/z-label/index.stories.d.ts +9 -0
  62. package/dist/types/components/z-pagination/index.d.ts +2 -0
  63. package/dist/types/components/z-pagination/index.stories.d.ts +64 -2
  64. package/dist/types/components/z-select/index.stories.d.ts +1 -0
  65. package/dist/types/components/z-toast-notification/index.d.ts +1 -10
  66. package/dist/types/components/z-toast-notification/index.stories.d.ts +10 -2
  67. package/dist/types/components.d.ts +8 -0
  68. package/dist/web-components-library/p-1dd6dff4.entry.js +7 -0
  69. package/dist/web-components-library/p-1dd6dff4.entry.js.map +1 -0
  70. package/dist/web-components-library/{p-957d4244.entry.js → p-550a5e46.entry.js} +2 -2
  71. package/dist/web-components-library/{p-957d4244.entry.js.map → p-550a5e46.entry.js.map} +1 -1
  72. package/dist/web-components-library/{p-fbbacad0.entry.js → p-b705fba3.entry.js} +2 -2
  73. package/dist/web-components-library/p-b705fba3.entry.js.map +1 -0
  74. package/dist/web-components-library/p-c6b7c8e4.entry.js +2 -0
  75. package/dist/web-components-library/p-c6b7c8e4.entry.js.map +1 -0
  76. package/dist/web-components-library/{p-ccb2318f.entry.js → p-e353d03a.entry.js} +2 -2
  77. package/dist/web-components-library/{p-ccb2318f.entry.js.map → p-e353d03a.entry.js.map} +1 -1
  78. package/dist/web-components-library/p-f7d7cf44.entry.js +2 -0
  79. package/dist/web-components-library/p-f7d7cf44.entry.js.map +1 -0
  80. package/dist/web-components-library/web-components-library.css +11 -0
  81. package/dist/web-components-library/web-components-library.esm.js +1 -1
  82. package/package.json +1 -1
  83. package/www/build/p-1dd6dff4.entry.js +7 -0
  84. package/www/build/p-1dd6dff4.entry.js.map +1 -0
  85. package/www/build/{p-957d4244.entry.js → p-550a5e46.entry.js} +2 -2
  86. package/www/build/{p-957d4244.entry.js.map → p-550a5e46.entry.js.map} +1 -1
  87. package/www/build/{p-0f3b0c17.js → p-84f32d71.js} +1 -1
  88. package/www/build/{p-fbbacad0.entry.js → p-b705fba3.entry.js} +2 -2
  89. package/www/build/p-b705fba3.entry.js.map +1 -0
  90. package/www/build/p-c6b7c8e4.entry.js +2 -0
  91. package/www/build/p-c6b7c8e4.entry.js.map +1 -0
  92. package/www/build/{p-56d35027.css → p-dda8d321.css} +11 -0
  93. package/www/build/{p-ccb2318f.entry.js → p-e353d03a.entry.js} +2 -2
  94. package/www/build/{p-ccb2318f.entry.js.map → p-e353d03a.entry.js.map} +1 -1
  95. package/www/build/p-f7d7cf44.entry.js +2 -0
  96. package/www/build/p-f7d7cf44.entry.js.map +1 -0
  97. package/www/build/web-components-library.css +11 -0
  98. package/www/build/web-components-library.esm.js +1 -1
  99. package/www/index.html +1 -1
  100. package/dist/web-components-library/p-72c07bbd.entry.js +0 -7
  101. package/dist/web-components-library/p-72c07bbd.entry.js.map +0 -1
  102. package/dist/web-components-library/p-7df942c9.entry.js +0 -2
  103. package/dist/web-components-library/p-7df942c9.entry.js.map +0 -1
  104. package/dist/web-components-library/p-8cbb9bbe.entry.js +0 -2
  105. package/dist/web-components-library/p-8cbb9bbe.entry.js.map +0 -1
  106. package/dist/web-components-library/p-fbbacad0.entry.js.map +0 -1
  107. package/www/build/p-72c07bbd.entry.js +0 -7
  108. package/www/build/p-72c07bbd.entry.js.map +0 -1
  109. package/www/build/p-7df942c9.entry.js +0 -2
  110. package/www/build/p-7df942c9.entry.js.map +0 -1
  111. package/www/build/p-8cbb9bbe.entry.js +0 -2
  112. package/www/build/p-8cbb9bbe.entry.js.map +0 -1
  113. package/www/build/p-fbbacad0.entry.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"names":["stylesCss","ZComboboxStyle0","ZCombobox","watchItems","this","itemsList","items","JSON","parse","selectedCounter","filter","item","checked","length","updateRenderItemsList","watchSearchValue","filterItems","searchValue","watchCheckboxes","checkboxes","forEach","index","setAttribute","emitComboboxChange","comboboxChange","emit","id","inputid","constructor","hostRef","inputType","InputType","TEXT","randomId","ControlSize","BIG","toggleComboBox","bind","closeFilterItems","componentWillLoad","componentWillRender","componentDidRender","getAllCheckboxes","stringify","getItemId","getCheckboxClass","Array","from","element","shadowRoot","querySelectorAll","getControlToListSize","size","X_SMALL","ListSize","SMALL","MEDIUM","LARGE","handleSelectArrowsNavigation","e","currId","KeyboardCode","ARROW_DOWN","ARROW_UP","includes","key","isopen","preventDefault","stopPropagation","currElem","querySelector","currElemIndex","indexOf","firstElemIndex","lastElemIndex","nextElem","focusComboboxItem","handleHeaderKeyboardEvent","ev","SPACE","handleCheckboxFocus","focusedItemId","elem","focus","resetRenderItemsList","renderItemsList","push","Object","assign","value","start","name","toUpperCase","end","newName","substring","checkAll","map","getComboboxA11yAttributes","role","label","renderHeader","h","class","onClick","onKeyDown","onKeyUp","handleKeyboardSubmit","tabindex","renderContent","hassearch","renderSearchInput","join","hascheckall","renderCheckAll","renderItems","renderList","renderCloseButton","renderItem","htmlTabindex","dividerType","ListDividerType","ELEMENT","NONE","type","CHECKBOX","htmlid","disabled","maxcheckableitems","onInputCheck","i","detail","onInputFocus","renderNoSearchResults","hasgroupitems","renderGroups","newData","reduce","group","category","zListItem","_a","listGroups","entries","slot","noresultslabel","closesearchtext","searchlabel","placeholder","searchplaceholder","htmltitle","searchtitle","message","ESC","onInputChange","checkAllId","allChecked","uncheckalltext","checkalltext","render","open","fixed","isfixed"],"sources":["src/components/z-combobox/styles.css?tag=z-combobox&encapsulation=shadow","src/components/z-combobox/index.tsx"],"sourcesContent":[":host {\n display: block;\n color: var(--color-form-default-text);\n fill: var(--color-form-default-icon);\n font-family: var(--font-family-sans);\n}\n\n:host > div.fixed {\n position: relative;\n}\n\n:host > div > .header {\n position: relative;\n z-index: 10;\n display: flex;\n min-height: 42px;\n align-items: center;\n justify-content: space-between;\n padding: 0 calc(var(--space-unit) * 1.5);\n border: var(--border-size-small) solid var(--color-form-surface04);\n margin: 0;\n background-color: var(--color-form-background);\n border-radius: var(--border-radius-small);\n cursor: pointer;\n}\n\n:host([size=\"small\"]) > div > .header {\n min-height: 34px;\n font-size: var(--font-size-2);\n}\n\n:host([size=\"x-small\"]) > div > .header {\n min-height: 30px;\n font-size: var(--font-size-2);\n}\n\n:host([size=\"x-small\"]) > div > .header p.body-3 {\n padding: calc(var(--space-unit) * 0.5) 0;\n}\n\n:host > div > .header:hover {\n outline: var(--border-size-medium) solid var(--color-form-surface04);\n outline-offset: -2px;\n}\n\n:host > div > div.header:focus:focus-visible {\n z-index: 16;\n box-shadow: var(--shadow-focus-primary);\n outline: none;\n}\n\n:host > div > .header > p.body-3 {\n padding: var(--space-unit) 0;\n margin: 0;\n}\n\n:host > div > .header > p.body-3 > span {\n font-weight: var(--font-sb);\n}\n\n:host > div > .header > z-icon {\n fill: var(--color-form-default-icon);\n transform: rotate(360deg);\n transition: all 200ms linear;\n}\n\n:host > div > .header > z-icon.small,\n:host > div > .header > z-icon.x-small {\n --z-icon-width: 16px;\n --z-icon-height: 16px;\n}\n\n:host > div.open > .header {\n border: var(--border-size-small) solid var(--color-form-active-primary);\n border-radius: var(--border-radius-small) var(--border-radius-small) 0 0;\n}\n\n:host > div.disabled {\n pointer-events: none;\n}\n\n:host > div.disabled .header {\n border-color: var(--color-form-disabled03);\n fill: var(--color-form-disabled01-icon);\n}\n\n:host > div.disabled .header > p.body-3 {\n color: var(--color-form-disabled03);\n}\n\n:host > div.disabled .header > z-icon:last-child {\n fill: var(--color-form-disabled01-icon);\n}\n\n:host > div.open > .header > z-icon {\n fill: var(--color-form-default-icon);\n transform: rotate(180deg);\n transition: all 200ms linear;\n}\n\n:host > div.open > div.open-combo-data {\n position: relative;\n z-index: 12;\n padding: var(--space-unit) calc(var(--space-unit) * 2);\n border: var(--border-size-small) solid var(--color-form-surface03);\n border-top: 0;\n background-color: var(--color-form-background);\n border-radius: 0;\n box-shadow: var(--shadow-2);\n}\n\n:host .open .open-combo-data z-input .input-label {\n color: var(--color-form-default-text);\n}\n\n:host > div.open > div.open-combo-data > div > div {\n overflow: auto;\n max-height: 235px;\n padding: 0;\n}\n\n:host > div.open > div.open-combo-data > z-input {\n width: 100%;\n margin-bottom: calc(var(--space-unit) * 2);\n}\n\n:host > div.open > div.open-combo-data > div > div > ul {\n max-height: 235px;\n padding: 0 3px; /* needed for checkbox focus shadow */\n margin: 0;\n}\n\n:host .open-combo-data z-list-element {\n --background-color-list-element: var(--color-form-background);\n --background-hover-color-list-element: var(--color-form-surface03);\n --background-active-color-list-element: var(--color-form-surface03);\n}\n\n::-webkit-scrollbar {\n width: 6px;\n background: linear-gradient(to right, transparent 0 1px, var(--gray200) 1px 5px, transparent 5px 6px);\n}\n\n::-webkit-scrollbar-thumb {\n background-color: var(--color-primary01);\n}\n\n::-webkit-scrollbar-thumb:hover {\n background-color: var(--color-hover-primary);\n}\n\n/* Firefox scrollbar */\n@supports not selector(::-webkit-scrollbar-track) {\n :host {\n scrollbar-color: var(--color-primary01) transparent;\n }\n}\n\n:host > div.open > z-input {\n position: relative;\n z-index: 1;\n width: 238px;\n margin: 0 calc(var(--space-unit) * 2);\n color: var(--color-form-active-primary);\n}\n\n:host > div.open > div.open-combo-data > div > div.search {\n overflow: hidden;\n max-height: none;\n margin-top: 0;\n}\n\n:host > div.open > div.open-combo-data > div > div.search > ul {\n overflow: auto;\n max-height: 180px;\n padding: var(--space-unit) calc(var(--space-unit) * 2);\n}\n\n:host .open .open-combo-data .search .no-results {\n display: flex;\n align-items: center;\n column-gap: var(--space-unit);\n}\n\n:host > .open > .open-combo-data .search .close-search {\n display: flex;\n justify-content: center;\n}\n\n:host > div.open > div.open-combo-data > div > div.search .close-search > a {\n display: inline-block;\n height: 44px;\n color: var(--color-form-active-primary);\n cursor: pointer;\n font-size: 14px;\n font-weight: var(--font-sb);\n line-height: 44px;\n text-align: center;\n text-transform: uppercase;\n}\n\n:host > div.open > div.open-combo-data > div > div.search .close-search > a:focus:focus-visible {\n box-shadow: var(--shadow-focus-primary);\n outline: none;\n}\n\n:host > div.open > div.open-combo-data > div > div.check-all-wrapper {\n padding: calc(var(--space-unit) * 2) calc(var(--space-unit) * 0.5);\n border-bottom: var(--border-size-small) solid var(--gray800);\n margin-bottom: var(--space-unit);\n text-align: left;\n}\n\n:host([size=\"small\"]) > div.open > div.open-combo-data > div > div.check-all-wrapper {\n padding: calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 0.5);\n}\n\n:host([size=\"x-small\"]) > div.open > div.open-combo-data > div > div.check-all-wrapper {\n padding: var(--space-unit) calc(var(--space-unit) * 0.5);\n}\n","import {Component, Element, Event, EventEmitter, Prop, State, Watch, h} from \"@stencil/core\";\nimport {ComboItem, ControlSize, InputType, KeyboardCode, ListDividerType, ListSize} from \"../../beans\";\nimport {handleKeyboardSubmit, randomId} from \"../../utils/utils\";\nimport {ZInput} from \"../z-input\";\n\n@Component({\n tag: \"z-combobox\",\n styleUrl: \"styles.css\",\n shadow: true,\n})\nexport class ZCombobox {\n @Element() element: HTMLZComboboxElement;\n\n /** input unique id */\n @Prop()\n inputid = `combo-${randomId()}`;\n\n /** list items array */\n @Prop()\n items: ComboItem[] | string;\n\n /** label text */\n @Prop()\n label: string;\n\n /** the combobox is disabled */\n @Prop({reflect: true})\n disabled?: boolean = false;\n\n /** show search input flag (optional) */\n @Prop()\n hassearch?: boolean = false;\n\n /** search input label text (optional) */\n @Prop()\n searchlabel?: string;\n\n /** search input placeholder text (optional) */\n @Prop()\n searchplaceholder?: string;\n\n /** search input title text (optional) */\n @Prop()\n searchtitle?: string;\n\n /** no result text message */\n @Prop()\n noresultslabel?: string = \"Nessun risultato\";\n\n /** toggle combo list opening flag */\n @Prop({mutable: true})\n isopen = false;\n\n /** fixed style flag */\n @Prop()\n isfixed = false;\n\n /** close combobox list text */\n @Prop()\n closesearchtext?: string = \"Chiudi\";\n\n /** show \"check all\" checkbox (optional) */\n @Prop()\n hascheckall?: boolean = false;\n\n /** check all label (optional) */\n @Prop()\n checkalltext?: string = \"Seleziona tutti\";\n\n /** uncheck all label (optional) */\n @Prop()\n uncheckalltext?: string = \"Deseleziona tutti\";\n\n /** max number of checkable items (0 = unlimited) */\n @Prop()\n maxcheckableitems = 0;\n\n /** group items by category */\n @Prop()\n hasgroupitems?: boolean;\n\n /** Available sizes: `big`, `small` and `x-small`. Defaults to `big`. */\n @Prop()\n size?: ControlSize = ControlSize.BIG;\n\n @State()\n searchValue: string;\n\n @State()\n selectedCounter: number;\n\n @State()\n renderItemsList: ComboItem[] = []; // used for render only\n\n @State()\n focusedItemId: string;\n\n @State()\n checkboxes: HTMLInputElement[] = [];\n\n private itemsList: ComboItem[] = [];\n\n private inputType: InputType = InputType.TEXT;\n\n @Watch(\"items\")\n watchItems(): void {\n this.itemsList = typeof this.items === \"string\" ? JSON.parse(this.items) : this.items;\n this.selectedCounter = this.itemsList.filter((item) => item.checked).length;\n this.updateRenderItemsList();\n }\n\n @Watch(\"searchValue\")\n watchSearchValue(): void {\n this.filterItems(this.searchValue);\n }\n\n @Watch(\"checkboxes\")\n watchCheckboxes(): void {\n this.checkboxes.forEach((item, index) => item.setAttribute(\"tabindex\", index === 0 ? \"0\" : \"-1\"));\n }\n\n /** Emitted when value is checked/unchecked. Returns id, items. */\n @Event()\n comboboxChange: EventEmitter;\n\n private emitComboboxChange(): void {\n this.comboboxChange.emit({id: this.inputid, items: this.itemsList});\n }\n\n constructor() {\n this.toggleComboBox = this.toggleComboBox.bind(this);\n this.closeFilterItems = this.closeFilterItems.bind(this);\n }\n\n componentWillLoad(): void {\n this.watchItems();\n }\n\n componentWillRender(): void {\n this.selectedCounter = this.itemsList.filter((item) => item.checked).length;\n }\n\n componentDidRender(): void {\n const checkboxes = this.getAllCheckboxes();\n if (JSON.stringify(checkboxes) !== JSON.stringify(this.checkboxes)) {\n this.checkboxes = checkboxes;\n }\n }\n\n private getItemId(item: ComboItem): string {\n return `combo-checkbox-${this.inputid}-${item.id}`;\n }\n\n private getCheckboxClass(): string {\n return `combo-item-checkbox-input-${this.inputid}`;\n }\n\n private getAllCheckboxes(): HTMLInputElement[] {\n return Array.from(\n this.element.shadowRoot.querySelectorAll(`.${this.getCheckboxClass()} input:not([disabled])`)\n ) as HTMLInputElement[];\n }\n\n private getControlToListSize(): ListSize {\n switch (this.size) {\n case ControlSize.X_SMALL:\n return ListSize.SMALL;\n case ControlSize.SMALL:\n return ListSize.MEDIUM;\n default:\n return ListSize.LARGE;\n }\n }\n\n private handleSelectArrowsNavigation(e: KeyboardEvent, currId: string): void {\n if (![KeyboardCode.ARROW_DOWN, KeyboardCode.ARROW_UP].includes(e.key as KeyboardCode) || !this.isopen) {\n return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n\n const currElem = this.element.shadowRoot.querySelector(`#${currId}`) as HTMLInputElement;\n if (!currElem) {\n return;\n }\n\n const checkboxes = this.checkboxes;\n if (!checkboxes.length) {\n return;\n }\n\n const currElemIndex = checkboxes.indexOf(currElem);\n const firstElemIndex = 0;\n const lastElemIndex = checkboxes.length - 1;\n\n let nextElem = null;\n if (e.key === KeyboardCode.ARROW_DOWN) {\n nextElem = currElemIndex === lastElemIndex ? checkboxes[firstElemIndex] : checkboxes[currElemIndex + 1];\n } else if (e.key === KeyboardCode.ARROW_UP) {\n nextElem = currElemIndex === firstElemIndex ? checkboxes[lastElemIndex] : checkboxes[currElemIndex - 1];\n }\n\n this.focusComboboxItem(nextElem);\n }\n\n private handleHeaderKeyboardEvent(ev: KeyboardEvent): void {\n if (ev.key === KeyboardCode.SPACE) {\n ev.preventDefault();\n }\n if ((ev.key === KeyboardCode.ARROW_DOWN && !this.isopen) || (ev.key === KeyboardCode.ARROW_UP && this.isopen)) {\n this.toggleComboBox();\n }\n }\n\n private handleCheckboxFocus(id: string): void {\n this.focusedItemId = id;\n }\n\n private focusComboboxItem(elem): void {\n this.checkboxes.forEach(function (item) {\n item.setAttribute(\"tabindex\", \"-1\");\n });\n\n elem.setAttribute(\"tabindex\", \"0\");\n elem.focus();\n }\n\n private updateRenderItemsList(): void {\n if (this.searchValue) {\n this.filterItems(this.searchValue);\n } else {\n this.resetRenderItemsList();\n }\n }\n\n private resetRenderItemsList(): void {\n const renderItemsList = [];\n this.itemsList.forEach((item: ComboItem) => {\n renderItemsList.push({...item});\n });\n this.renderItemsList = renderItemsList;\n }\n\n private filterItems(value: string): void {\n if (!value) {\n return this.closeFilterItems();\n }\n\n this.resetRenderItemsList();\n this.renderItemsList = this.renderItemsList.filter((item) => {\n const start = item.name.toUpperCase().indexOf(value.toUpperCase());\n const end = start + value.length;\n const newName =\n item.name.substring(0, start) +\n \"<strong>\" +\n item.name.substring(start, end) +\n \"</strong>\" +\n item.name.substring(end, item.name.length);\n\n item.name = newName;\n\n return start >= 0;\n });\n }\n\n private checkAll(checked = true): void {\n this.itemsList = this.itemsList.map((item: ComboItem) => ({\n ...item,\n checked: checked,\n }));\n this.resetRenderItemsList();\n this.emitComboboxChange();\n }\n\n private closeFilterItems(): void {\n this.searchValue = \"\";\n this.resetRenderItemsList();\n }\n\n private toggleComboBox(): void {\n this.isopen = !this.isopen;\n }\n\n private getComboboxA11yAttributes(): Record<string, string> {\n return {\n \"role\": \"combobox\",\n \"aria-label\": this.label,\n \"aria-expanded\": this.isopen ? \"true\" : \"false\",\n \"aria-activedescendant\": this.isopen ? this.focusedItemId : \"\",\n \"aria-controls\": `${this.inputid}_list`,\n };\n }\n\n private renderHeader(): HTMLDivElement {\n return (\n <div\n class=\"header\"\n onClick={() => this.toggleComboBox()}\n onKeyDown={(ev: KeyboardEvent) => {\n this.handleHeaderKeyboardEvent(ev);\n }}\n onKeyUp={(ev: KeyboardEvent) => handleKeyboardSubmit(ev, this.toggleComboBox)}\n role=\"button\"\n tabindex={0}\n aria-expanded={this.isopen ? \"true\" : \"false\"}\n >\n <p class=\"body-3\">\n {this.label}\n <span>{this.selectedCounter > 0 && ` (${this.selectedCounter})`}</span>\n </p>\n <z-icon\n name=\"caret-down\"\n class={this.size}\n />\n </div>\n );\n }\n\n private renderContent(): HTMLDivElement {\n if (!this.isopen) {\n return;\n }\n\n return (\n <div class=\"open-combo-data\">\n {this.hassearch && this.renderSearchInput()}\n {!this.hassearch ? <span {...this.getComboboxA11yAttributes()} /> : null}\n <div\n role=\"listbox\"\n aria-label={this.label}\n aria-multiselectable={true}\n id={`${this.inputid}_list`}\n aria-owns={`${this.checkboxes.map((item) => item.id).join(\" \")}`}\n >\n {this.hascheckall && this.renderCheckAll()}\n {this.renderItems()}\n </div>\n </div>\n );\n }\n\n private renderItems(): HTMLDivElement {\n return (\n <div class={this.searchValue && \"search\"}>\n {this.renderList(this.renderItemsList)}\n {this.searchValue && this.renderCloseButton()}\n </div>\n );\n }\n\n private renderItem(item: ComboItem, index: number, length: number): HTMLZListElement {\n return (\n <z-list-element\n id={item.id}\n htmlTabindex={null}\n dividerType={index !== length - 1 ? ListDividerType.ELEMENT : ListDividerType.NONE}\n size={this.getControlToListSize()}\n >\n <z-input\n type={InputType.CHECKBOX}\n checked={item.checked}\n htmlid={this.getItemId(item)}\n label={item.name}\n class={this.getCheckboxClass()}\n disabled={!item.checked && this.maxcheckableitems && this.selectedCounter >= this.maxcheckableitems}\n size={this.size === ControlSize.X_SMALL ? ControlSize.SMALL : this.size}\n role=\"option\"\n aria-selected={item.checked ? \"true\" : \"false\"}\n onKeyDown={(e: KeyboardEvent) => this.handleSelectArrowsNavigation(e, this.getItemId(item))}\n onInputCheck={(e: CustomEvent) => {\n this.itemsList = this.itemsList.map((i: ComboItem) => {\n if (item.id === i.id) {\n i.checked = e.detail.checked;\n }\n\n return i;\n });\n this.updateRenderItemsList();\n this.emitComboboxChange();\n }}\n onInputFocus={(e: CustomEvent) => this.handleCheckboxFocus(e.detail.id)}\n />\n </z-list-element>\n );\n }\n\n private renderList(items: ComboItem[]): HTMLUListElement {\n if (!items) {\n return;\n }\n if (!items.length && this.searchValue) {\n return this.renderNoSearchResults();\n }\n\n if (this.hasgroupitems) {\n return this.renderGroups(items);\n }\n\n return (\n <ul role=\"none\">\n {items.map((item, i) => {\n return this.renderItem(item, i, items.length);\n })}\n </ul>\n );\n }\n\n private renderGroups(items: ComboItem[]): HTMLUListElement {\n const newData = items.reduce((group, item, index) => {\n const {category} = item;\n const zListItem = this.renderItem(item, index, items.length);\n\n group[category] = group[category] ?? [];\n group[category].push(zListItem);\n\n return group;\n }, {});\n\n const listGroups = Object.entries(newData as {[key: string]: HTMLZListElementElement[]}).map(([key, value]) => {\n return (\n <z-list-group divider-type={ListDividerType.ELEMENT}>\n <span\n class=\"body-3-sb z-list-group-title\"\n slot=\"header-title\"\n >\n {key}\n </span>\n {value.map((item) => item)}\n </z-list-group>\n );\n });\n\n return <ul role=\"none\">{listGroups}</ul>;\n }\n\n private renderNoSearchResults(): HTMLUListElement {\n return (\n <div class=\"no-results\">\n <z-icon name=\"multiply-circle\" />\n <span>{this.noresultslabel}</span>\n </div>\n );\n }\n\n private renderCloseButton(): HTMLDivElement {\n return (\n <div class=\"close-search\">\n <a\n onClick={() => this.closeFilterItems()}\n onKeyUp={(e: KeyboardEvent) => handleKeyboardSubmit(e, this.closeFilterItems)}\n role=\"button\"\n tabindex={0}\n >\n {this.closesearchtext}\n </a>\n </div>\n );\n }\n\n private renderSearchInput(): ZInput {\n return (\n <z-input\n htmlid={`${this.inputid}_search`}\n label={this.searchlabel}\n placeholder={this.searchplaceholder}\n htmltitle={this.searchtitle}\n type={this.inputType}\n value={this.searchValue}\n message={false}\n size={this.size}\n aria-autocomplete=\"list\"\n {...this.getComboboxA11yAttributes()}\n onKeyUp={(e: KeyboardEvent) => {\n if (e.key === KeyboardCode.ESC) {\n this.closeFilterItems();\n }\n }}\n onInputChange={(e: CustomEvent) => {\n this.searchValue = e.detail.value;\n }}\n />\n );\n }\n\n private renderCheckAll(): HTMLDivElement {\n if (this.searchValue) {\n return;\n }\n\n const checkAllId = `combo-checkbox-${this.inputid}-check-all`;\n const allChecked = this.selectedCounter === this.itemsList.length;\n\n return (\n <div class=\"check-all-wrapper\">\n <z-input\n type={InputType.CHECKBOX}\n checked={allChecked}\n htmlid={checkAllId}\n class={this.getCheckboxClass()}\n label={allChecked ? this.uncheckalltext : this.checkalltext}\n disabled={this.maxcheckableitems && this.maxcheckableitems < this.itemsList.length}\n size={this.size === ControlSize.X_SMALL ? ControlSize.SMALL : this.size}\n role=\"option\"\n aria-selected={allChecked ? \"true\" : \"false\"}\n onKeyDown={(e: KeyboardEvent) => this.handleSelectArrowsNavigation(e, checkAllId)}\n onInputCheck={(e: CustomEvent) => this.checkAll(e.detail.checked)}\n onInputFocus={(e: CustomEvent) => this.handleCheckboxFocus(e.detail.id)}\n />\n </div>\n );\n }\n\n render(): HTMLDivElement {\n return (\n <div\n data-action={`combo-${this.inputid}`}\n class={{open: this.isopen, fixed: this.isfixed, disabled: this.disabled}}\n id={this.inputid}\n >\n {this.renderHeader()}\n {!this.disabled && this.renderContent()}\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["stylesCss","ZInfoRevealStyle0","ZInfoReveal","InfoRevealPosition","BOTTOM_RIGHT","ControlSize","BIG","adjustPanelPosition","this","open","panel","rect","host","getBoundingClientRect","gridMargin","parseInt","getComputedStyle","document","documentElement","getPropertyValue","pageWidth","offsetWidth","availableSpace","Math","round","position","includes","left","right","style","maxWidth","togglePanel","closePanel","handleEscapeKey","event","key","render","h","Host","class","type","onClick","bind","label","ariaLabel","undefined","icon","name","id","ref","el","hidden"],"sources":["src/components/z-info-reveal/styles.css?tag=z-info-reveal&encapsulation=shadow","src/components/z-info-reveal/index.tsx"],"sourcesContent":[":host {\n --z-info-reveal-panel-width: 384px; /* defaults half the size of the mobile breakpoint */\n --trigger-size: 44px;\n\n position: relative;\n}\n\n:host * {\n box-sizing: border-box;\n}\n\nbutton {\n --trigger-icon-size: calc(var(--trigger-size) / 2);\n\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n background-color: transparent;\n cursor: pointer;\n font-family: inherit;\n letter-spacing: inherit;\n}\n\nbutton:focus:focus-visible {\n box-shadow: var(--shadow-focus-primary);\n outline: none;\n}\n\n.z-info-reveal-trigger {\n min-width: var(--trigger-size);\n height: var(--trigger-size);\n padding: calc((var(--trigger-size) - var(--trigger-icon-size)) / 2);\n background-color: var(--color-surface05);\n border-radius: var(--border-radius);\n color: var(--color-text-inverse);\n column-gap: var(--space-unit);\n font-weight: var(--font-sb);\n line-height: 1rem;\n}\n\n:host([size=\"big\"]) .z-info-reveal-trigger {\n font-size: var(--font-size-2);\n}\n\n:host([size=\"small\"]) .z-info-reveal-trigger {\n --trigger-size: 36px;\n\n font-size: var(--font-size-2);\n}\n\n:host([size=\"x-small\"]) .z-info-reveal-trigger {\n --trigger-size: 32px;\n\n padding: var(--space-unit);\n font-size: var(--font-size-1);\n}\n\n:host > .z-info-reveal-trigger z-icon {\n --z-icon-width: var(--trigger-icon-size);\n --z-icon-height: var(--trigger-icon-size);\n\n display: flex;\n fill: var(--color-inverse-icon);\n}\n\n:host([size=\"small\"]) > .z-info-reveal-trigger z-icon {\n --trigger-icon-size: var(--trigger-icon-size-small, 18px);\n}\n\n:host([size=\"x-small\"]) > .z-info-reveal-trigger z-icon {\n --trigger-icon-size: var(--trigger-icon-size-x-small, 16px);\n}\n\n.z-info-reveal-panel {\n position: absolute;\n z-index: 99;\n display: flex;\n width: var(--z-info-reveal-panel-width);\n height: fit-content;\n align-items: flex-start;\n padding: calc(var(--space-unit) * 1.5);\n background-color: var(--color-surface05);\n border-radius: var(--border-radius);\n box-shadow: var(--shadow-4);\n color: var(--color-text-inverse);\n column-gap: var(--space-unit);\n}\n\n.z-info-reveal-panel[hidden] {\n display: none;\n}\n\n:host([position=\"top_left\"]) .z-info-reveal-panel,\n:host([position=\"top_right\"]) .z-info-reveal-panel {\n top: 0;\n}\n\n:host([position=\"bottom_left\"]) .z-info-reveal-panel,\n:host([position=\"bottom_right\"]) .z-info-reveal-panel {\n bottom: 0;\n}\n\n:host([position=\"top_right\"]) .z-info-reveal-panel,\n:host([position=\"bottom_right\"]) .z-info-reveal-panel {\n right: 0;\n}\n\n:host([position=\"top_left\"]) .z-info-reveal-panel,\n:host([position=\"bottom_left\"]) .z-info-reveal-panel {\n left: 0;\n}\n\n.z-info-reveal-panel .z-info-reveal-close {\n margin-left: auto;\n}\n\n.z-info-reveal-panel z-icon {\n fill: var(--color-inverse-icon);\n}\n\n@media (max-width: 767px) {\n .z-info-reveal-panel {\n position: fixed;\n top: auto !important;\n bottom: auto !important;\n left: var(--grid-margin) !important;\n width: calc(100% - (var(--grid-margin) * 2)) !important;\n max-width: none !important;\n margin-top: calc(var(--trigger-size) * -1);\n }\n}\n","import {Component, Element, Host, Listen, Prop, State, Watch, h} from \"@stencil/core\";\nimport {ControlSize, InfoRevealPosition} from \"../../beans\";\n\n/**\n * Info reveal component.\n *\n * @slot - content of the info panel.\n * @cssprop --z-info-reveal-panel-width - Width of the info panel.\n * @cssprop --trigger-icon-size - Size of the trigger icon for big size.\n * @cssprop --trigger-icon-size-small - Size of the trigger icon for small size.\n * @cssprop --trigger-icon-size-x-small - Size of the trigger icon for x-small size.\n */\n@Component({\n tag: \"z-info-reveal\",\n styleUrl: \"styles.css\",\n shadow: true,\n})\nexport class ZInfoReveal {\n /** Name of the icon for the trigger button */\n @Prop()\n icon? = \"informationsource\";\n\n /**\n * The position of the z-info-reveal in the page. This helps to correctly place the info panel.\n * The panel will grow in the opposite direction of the position.\n * For example, with the default position `BOTTOM_RIGHT`, the panel will grow vertically upwards and horizontally to the left.\n */\n @Prop({reflect: true})\n position?: InfoRevealPosition = InfoRevealPosition.BOTTOM_RIGHT;\n\n /** Label of the trigger button. */\n @Prop()\n label?: string;\n\n /** Aria label of the trigger button. It will be only used when `label` prop is empty. */\n @Prop()\n ariaLabel = \"Apri pannello informazioni\";\n\n /** Size of the trigger button */\n @Prop({reflect: true})\n size?: ControlSize = ControlSize.BIG;\n\n /** Whether the info panel is open. */\n @State()\n open = false;\n\n @Element() host: HTMLZInfoRevealElement;\n\n private panel: HTMLDivElement;\n\n /**\n * Adjust the position of the info panel to prevent exiting the viewport.\n */\n @Watch(\"position\")\n @Watch(\"open\")\n @Listen(\"resize\", {target: \"window\", passive: true})\n adjustPanelPosition(): void {\n if (!this.open || !this.panel) {\n return;\n }\n\n const rect = this.host.getBoundingClientRect();\n const gridMargin = parseInt(getComputedStyle(document.documentElement).getPropertyValue(\"--grid-margin\"), 10);\n const pageWidth = document.documentElement.offsetWidth;\n // Available space for the info panel to grow towards the edge of the page, based on the `position` prop.\n const availableSpace = Math.round(\n (this.position.includes(\"left\") ? pageWidth - rect.left : rect.right) - gridMargin\n );\n this.panel.style.maxWidth = `${availableSpace}px`;\n }\n\n /**\n * Toggle the open state of the info panel.\n */\n private togglePanel(): void {\n this.open = !this.open;\n }\n\n /**\n * Close the info panel.\n */\n private closePanel(): void {\n this.open = false;\n }\n\n @Listen(\"keydown\", {target: \"window\", capture: true})\n handleEscapeKey(event: KeyboardEvent): void {\n if (event.key === \"Escape\" && this.open) {\n this.closePanel();\n }\n }\n\n render(): HTMLZInfoRevealElement {\n return (\n <Host open={this.open}>\n <button\n class=\"z-info-reveal-trigger\"\n type=\"button\"\n onClick={this.togglePanel.bind(this)}\n aria-label={!this.label ? this.ariaLabel : undefined}\n aria-expanded={this.open ? \"true\" : \"false\"}\n aria-controls=\"z-info-reveal-panel\"\n >\n {this.icon && <z-icon name={this.icon} />}\n {this.label && <span class=\"z-info-reveal-label\">{this.label}</span>}\n </button>\n <div\n class=\"z-info-reveal-panel\"\n id=\"z-info-reveal-panel\"\n ref={(el) => (this.panel = el)}\n hidden={!this.open}\n >\n <slot></slot>\n <button\n class=\"z-info-reveal-close\"\n type=\"button\"\n onClick={this.closePanel.bind(this)}\n aria-label=\"Chiudi pannello informazioni\"\n >\n <z-icon name=\"multiply\" />\n </button>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"oGAAA,MAAMA,EAAY,gkFAClB,MAAAC,EAAeD,E,MCgBFE,EAAW,M,mCAGd,oB,cAQwBC,EAAmBC,a,oCAQvC,6B,UAISC,EAAYC,I,UAI1B,K,CAYP,mBAAAC,GACE,IAAKC,KAAKC,OAASD,KAAKE,MAAO,CAC7B,M,CAGF,MAAMC,EAAOH,KAAKI,KAAKC,wBACvB,MAAMC,EAAaC,SAASC,iBAAiBC,SAASC,iBAAiBC,iBAAiB,iBAAkB,IAC1G,MAAMC,EAAYH,SAASC,gBAAgBG,YAE3C,MAAMC,EAAiBC,KAAKC,OACzBhB,KAAKiB,SAASC,SAAS,QAAUN,EAAYT,EAAKgB,KAAOhB,EAAKiB,OAASd,GAE1EN,KAAKE,MAAMmB,MAAMC,SAAW,GAAGR,K,CAMzB,WAAAS,GACNvB,KAAKC,MAAQD,KAAKC,I,CAMZ,UAAAuB,GACNxB,KAAKC,KAAO,K,CAId,eAAAwB,CAAgBC,GACd,GAAIA,EAAMC,MAAQ,UAAY3B,KAAKC,KAAM,CACvCD,KAAKwB,Y,EAIT,MAAAI,GACE,OACEC,EAACC,EAAI,CAAAH,IAAA,2CAAC1B,KAAMD,KAAKC,MACf4B,EAAA,UAAAF,IAAA,2CACEI,MAAM,wBACNC,KAAK,SACLC,QAASjC,KAAKuB,YAAYW,KAAKlC,MAAK,cACvBA,KAAKmC,MAAQnC,KAAKoC,UAAYC,UAAS,gBACrCrC,KAAKC,KAAO,OAAS,QAAO,gBAC7B,uBAEbD,KAAKsC,MAAQT,EAAA,UAAAF,IAAA,2CAAQY,KAAMvC,KAAKsC,OAChCtC,KAAKmC,OAASN,EAAA,QAAAF,IAAA,2CAAMI,MAAM,uBAAuB/B,KAAKmC,QAEzDN,EAAA,OAAAF,IAAA,2CACEI,MAAM,sBACNS,GAAG,sBACHC,IAAMC,GAAQ1C,KAAKE,MAAQwC,EAC3BC,QAAS3C,KAAKC,MAEd4B,EAAA,QAAAF,IAAA,6CACAE,EAAA,UAAAF,IAAA,2CACEI,MAAM,sBACNC,KAAK,SACLC,QAASjC,KAAKwB,WAAWU,KAAKlC,MAAK,aACxB,gCAEX6B,EAAA,UAAAF,IAAA,2CAAQY,KAAK,e","ignoreList":[]}