q2-tecton-elements 1.36.0 → 1.37.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.
- package/dist/cjs/click-elsewhere_2.cjs.entry.js +1 -1
- package/dist/cjs/{index-f6545293.js → index-6f9f259c.js} +12 -9
- package/dist/cjs/index-6f9f259c.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/q2-action-sheet.cjs.entry.js +2 -2
- package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
- package/dist/cjs/q2-calendar.cjs.entry.js +46 -3
- package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-card.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
- package/dist/cjs/q2-chart-area.cjs.entry.js +2 -2
- package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-bar.cjs.entry.js +2 -2
- package/dist/cjs/q2-chart-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-chart-donut.cjs.entry.js +12 -8
- package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +25 -6
- package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/q2-data-table.cjs.entry.js +2 -2
- package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
- package/dist/cjs/q2-dropdown.cjs.entry.js +1 -1
- package/dist/cjs/q2-editable-field.cjs.entry.js +34 -6
- package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-icon.cjs.entry.js +1 -1
- package/dist/cjs/q2-input.cjs.entry.js +17 -10
- package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-loc.cjs.entry.js +1 -1
- package/dist/cjs/q2-message.cjs.entry.js +14 -13
- package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
- package/dist/cjs/q2-optgroup_2.cjs.entry.js +1 -1
- package/dist/cjs/q2-option-list.cjs.entry.js +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +1 -1
- package/dist/cjs/q2-pill.cjs.entry.js +3 -3
- package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js +9 -1
- package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-radio.cjs.entry.js +12 -3
- package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-section.cjs.entry.js +1 -1
- package/dist/cjs/q2-select.cjs.entry.js +54 -5
- package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +1 -1
- package/dist/cjs/q2-tab-container.cjs.entry.js +1 -1
- package/dist/cjs/q2-tag.cjs.entry.js +1 -1
- package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
- package/dist/cjs/q2-textarea.cjs.entry.js +13 -1
- package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
- package/dist/collection/components/q2-action-sheet/styles.css +0 -8
- package/dist/collection/components/q2-calendar/index.js +120 -2
- package/dist/collection/components/q2-calendar/index.js.map +1 -1
- package/dist/collection/components/q2-chart-area/index.js +1 -1
- package/dist/collection/components/q2-chart-area/index.js.map +1 -1
- package/dist/collection/components/q2-chart-bar/index.js +1 -1
- package/dist/collection/components/q2-chart-bar/index.js.map +1 -1
- package/dist/collection/components/q2-chart-donut/index.js +11 -7
- package/dist/collection/components/q2-chart-donut/index.js.map +1 -1
- package/dist/collection/components/q2-checkbox-group/index.js +45 -5
- package/dist/collection/components/q2-checkbox-group/index.js.map +1 -1
- package/dist/collection/components/q2-data-table/styles.css +37 -36
- package/dist/collection/components/q2-editable-field/index.js +96 -6
- package/dist/collection/components/q2-editable-field/index.js.map +1 -1
- package/dist/collection/components/q2-input/index.js +48 -10
- package/dist/collection/components/q2-input/index.js.map +1 -1
- package/dist/collection/components/q2-message/index.js +14 -13
- package/dist/collection/components/q2-message/index.js.map +1 -1
- package/dist/collection/components/q2-pill/index.js +2 -2
- package/dist/collection/components/q2-pill/index.js.map +1 -1
- package/dist/collection/components/q2-radio/index.js +29 -3
- package/dist/collection/components/q2-radio/index.js.map +1 -1
- package/dist/collection/components/q2-radio-group/index.js +27 -0
- package/dist/collection/components/q2-radio-group/index.js.map +1 -1
- package/dist/collection/components/q2-select/index.js +127 -5
- package/dist/collection/components/q2-select/index.js.map +1 -1
- package/dist/collection/components/q2-textarea/index.js +37 -0
- package/dist/collection/components/q2-textarea/index.js.map +1 -1
- package/dist/collection/utils/index.js +8 -6
- package/dist/collection/utils/index.js.map +1 -1
- package/dist/components/index11.js +14 -13
- package/dist/components/index11.js.map +1 -1
- package/dist/components/index16.js +11 -8
- package/dist/components/index16.js.map +1 -1
- package/dist/components/index9.js +19 -10
- package/dist/components/index9.js.map +1 -1
- package/dist/components/q2-action-sheet.js +1 -1
- package/dist/components/q2-action-sheet.js.map +1 -1
- package/dist/components/q2-calendar.js +51 -4
- package/dist/components/q2-calendar.js.map +1 -1
- package/dist/components/q2-chart-area.js +1 -1
- package/dist/components/q2-chart-area.js.map +1 -1
- package/dist/components/q2-chart-bar.js +1 -1
- package/dist/components/q2-chart-bar.js.map +1 -1
- package/dist/components/q2-chart-donut.js +11 -7
- package/dist/components/q2-chart-donut.js.map +1 -1
- package/dist/components/q2-checkbox-group.js +26 -6
- package/dist/components/q2-checkbox-group.js.map +1 -1
- package/dist/components/q2-data-table.js +1 -1
- package/dist/components/q2-data-table.js.map +1 -1
- package/dist/components/q2-editable-field.js +39 -7
- package/dist/components/q2-editable-field.js.map +1 -1
- package/dist/components/q2-pill.js +2 -2
- package/dist/components/q2-pill.js.map +1 -1
- package/dist/components/q2-radio-group.js +10 -1
- package/dist/components/q2-radio-group.js.map +1 -1
- package/dist/components/q2-radio.js +13 -3
- package/dist/components/q2-radio.js.map +1 -1
- package/dist/components/q2-select.js +59 -6
- package/dist/components/q2-select.js.map +1 -1
- package/dist/components/q2-textarea.js +15 -2
- package/dist/components/q2-textarea.js.map +1 -1
- package/dist/docs.json +224 -9
- package/dist/esm/click-elsewhere_2.entry.js +1 -1
- package/dist/esm/{index-35ff2881.js → index-74a659a5.js} +12 -9
- package/dist/esm/index-74a659a5.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/q2-action-sheet.entry.js +2 -2
- package/dist/esm/q2-action-sheet.entry.js.map +1 -1
- package/dist/esm/q2-btn_2.entry.js +1 -1
- package/dist/esm/q2-calendar.entry.js +46 -3
- package/dist/esm/q2-calendar.entry.js.map +1 -1
- package/dist/esm/q2-card.entry.js +1 -1
- package/dist/esm/q2-carousel-pane.entry.js +1 -1
- package/dist/esm/q2-carousel.entry.js +1 -1
- package/dist/esm/q2-chart-area.entry.js +2 -2
- package/dist/esm/q2-chart-area.entry.js.map +1 -1
- package/dist/esm/q2-chart-bar.entry.js +2 -2
- package/dist/esm/q2-chart-bar.entry.js.map +1 -1
- package/dist/esm/q2-chart-donut.entry.js +12 -8
- package/dist/esm/q2-chart-donut.entry.js.map +1 -1
- package/dist/esm/q2-checkbox-group.entry.js +25 -6
- package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
- package/dist/esm/q2-checkbox.entry.js +1 -1
- package/dist/esm/q2-data-table.entry.js +2 -2
- package/dist/esm/q2-data-table.entry.js.map +1 -1
- package/dist/esm/q2-dropdown-item.entry.js +1 -1
- package/dist/esm/q2-dropdown.entry.js +1 -1
- package/dist/esm/q2-editable-field.entry.js +34 -6
- package/dist/esm/q2-editable-field.entry.js.map +1 -1
- package/dist/esm/q2-icon.entry.js +1 -1
- package/dist/esm/q2-input.entry.js +17 -10
- package/dist/esm/q2-input.entry.js.map +1 -1
- package/dist/esm/q2-loc.entry.js +1 -1
- package/dist/esm/q2-message.entry.js +14 -13
- package/dist/esm/q2-message.entry.js.map +1 -1
- package/dist/esm/q2-month-picker.entry.js +1 -1
- package/dist/esm/q2-optgroup_2.entry.js +1 -1
- package/dist/esm/q2-option-list.entry.js +1 -1
- package/dist/esm/q2-pagination.entry.js +1 -1
- package/dist/esm/q2-pill.entry.js +3 -3
- package/dist/esm/q2-pill.entry.js.map +1 -1
- package/dist/esm/q2-radio-group.entry.js +9 -1
- package/dist/esm/q2-radio-group.entry.js.map +1 -1
- package/dist/esm/q2-radio.entry.js +12 -3
- package/dist/esm/q2-radio.entry.js.map +1 -1
- package/dist/esm/q2-section.entry.js +1 -1
- package/dist/esm/q2-select.entry.js +54 -5
- package/dist/esm/q2-select.entry.js.map +1 -1
- package/dist/esm/q2-stepper-pane.entry.js +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +1 -1
- package/dist/esm/q2-stepper.entry.js +1 -1
- package/dist/esm/q2-tab-container.entry.js +1 -1
- package/dist/esm/q2-tag.entry.js +1 -1
- package/dist/esm/q2-tecton-elements.js +1 -1
- package/dist/esm/q2-textarea.entry.js +13 -1
- package/dist/esm/q2-textarea.entry.js.map +1 -1
- package/dist/esm/q2-tooltip.entry.js +1 -1
- package/dist/q2-tecton-elements/{p-2b91b34e.entry.js → p-077107c1.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-09d4b3d3.entry.js +2 -0
- package/dist/q2-tecton-elements/p-09d4b3d3.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-b73e7870.entry.js → p-0d4aec6e.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-1c993698.entry.js +2 -0
- package/dist/q2-tecton-elements/p-1c993698.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-0c1b74e9.entry.js → p-252889b7.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-252889b7.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-d4da72f0.entry.js → p-25bd1b18.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-25bd1b18.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-2a975246.entry.js +2 -0
- package/dist/q2-tecton-elements/p-2a975246.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-55deaceb.entry.js → p-30facf35.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-3798ad96.entry.js +2 -0
- package/dist/q2-tecton-elements/p-3798ad96.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-2325975a.entry.js → p-46287c02.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-2bf5a3bc.entry.js → p-47c60d4a.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-6cc730db.entry.js → p-4abbd0b1.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-dafdb018.entry.js → p-570c1d3d.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-570c1d3d.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-4fb81d03.entry.js → p-578e3f98.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-58cdb9c7.entry.js +2 -0
- package/dist/q2-tecton-elements/p-58cdb9c7.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-c3650c2e.entry.js → p-597f8656.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-ce27270b.entry.js → p-59d34a17.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-3c0d391b.entry.js → p-5bc4d94c.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-70a59bf1.entry.js → p-67f33354.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-67f33354.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-c9f32e51.entry.js → p-6cacc879.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-f637136f.entry.js → p-7366d36d.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-e5a8f7ff.entry.js → p-75fd6df5.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-e5a8f7ff.entry.js.map → p-75fd6df5.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-68371e6d.entry.js → p-8e7b762a.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-ece07c0d.entry.js → p-9a28b93a.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-d3827468.entry.js → p-9c9a2550.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-15ca5c98.entry.js → p-9d743327.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-8c6f8d06.entry.js → p-9ef2829e.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-8c6f8d06.entry.js.map → p-9ef2829e.entry.js.map} +1 -1
- package/dist/q2-tecton-elements/{p-3fd4f83d.entry.js → p-a52371cf.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-f11326c2.entry.js → p-a53e9f1e.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-586c8654.entry.js → p-a60f82c0.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-a60f82c0.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-6e6b160d.entry.js → p-ac82ea35.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-8e8a40ca.entry.js → p-bfd69d42.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-82bda2ff.entry.js → p-db6921fb.entry.js} +2 -2
- package/dist/q2-tecton-elements/{p-cfbd2cb1.entry.js → p-e45856f7.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-e45856f7.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-654987bf.entry.js → p-e8858d0d.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-e8858d0d.entry.js.map +1 -0
- package/dist/q2-tecton-elements/{p-99ab3236.js → p-ef856249.js} +2 -2
- package/dist/q2-tecton-elements/p-ef856249.js.map +1 -0
- package/dist/q2-tecton-elements/{p-073df9e2.entry.js → p-efbe6c17.entry.js} +2 -2
- package/dist/q2-tecton-elements/p-efbe6c17.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
- package/dist/test/elements/q2-calendar-test.e2e.js +177 -0
- package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-chart-area-test.e2e.js +30 -1
- package/dist/test/elements/q2-chart-area-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-chart-bar-test.e2e.js +30 -1
- package/dist/test/elements/q2-chart-bar-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-chart-donut-test.e2e.js +21 -18
- package/dist/test/elements/q2-chart-donut-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-checkbox-group-test.e2e.js +138 -18
- package/dist/test/elements/q2-checkbox-group-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-checkbox-test.e2e.js +143 -115
- package/dist/test/elements/q2-checkbox-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-editable-field-test.e2e.js +149 -28
- package/dist/test/elements/q2-editable-field-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-input-test.e2e.js +150 -9
- package/dist/test/elements/q2-input-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-message-test.e2e.js +38 -1
- package/dist/test/elements/q2-message-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-pill-test.e2e.js +37 -1
- package/dist/test/elements/q2-pill-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-radio-group-test.e2e.js +148 -186
- package/dist/test/elements/q2-radio-group-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-radio-test.e2e.js +100 -15
- package/dist/test/elements/q2-radio-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-select-test.e2e.js +203 -0
- package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-tag-test.e2e.js +5 -0
- package/dist/test/elements/q2-tag-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-textarea-test.e2e.js +33 -1
- package/dist/test/elements/q2-textarea-test.e2e.js.map +1 -1
- package/dist/types/components/q2-calendar/index.d.ts +8 -1
- package/dist/types/components/q2-chart-donut/index.d.ts +1 -1
- package/dist/types/components/q2-checkbox-group/index.d.ts +3 -0
- package/dist/types/components/q2-editable-field/index.d.ts +10 -2
- package/dist/types/components/q2-input/index.d.ts +2 -0
- package/dist/types/components/q2-message/index.d.ts +1 -0
- package/dist/types/components/q2-radio/index.d.ts +1 -0
- package/dist/types/components/q2-radio-group/index.d.ts +1 -0
- package/dist/types/components/q2-select/index.d.ts +9 -1
- package/dist/types/components/q2-textarea/index.d.ts +2 -0
- package/dist/types/components.d.ts +19 -0
- package/package.json +3 -3
- package/dist/cjs/index-f6545293.js.map +0 -1
- package/dist/esm/index-35ff2881.js.map +0 -1
- package/dist/q2-tecton-elements/p-073df9e2.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-0c1b74e9.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-215d5ab4.entry.js +0 -2
- package/dist/q2-tecton-elements/p-215d5ab4.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-2987498c.entry.js +0 -2
- package/dist/q2-tecton-elements/p-2987498c.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-586c8654.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-654987bf.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-70a59bf1.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-7a6e33d4.entry.js +0 -2
- package/dist/q2-tecton-elements/p-7a6e33d4.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-99ab3236.js.map +0 -1
- package/dist/q2-tecton-elements/p-ae2fa966.entry.js +0 -2
- package/dist/q2-tecton-elements/p-ae2fa966.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-b8d1c16f.entry.js +0 -2
- package/dist/q2-tecton-elements/p-b8d1c16f.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-cfbd2cb1.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-d4da72f0.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-dafdb018.entry.js.map +0 -1
- /package/dist/q2-tecton-elements/{p-2b91b34e.entry.js.map → p-077107c1.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-b73e7870.entry.js.map → p-0d4aec6e.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-55deaceb.entry.js.map → p-30facf35.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-2325975a.entry.js.map → p-46287c02.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-2bf5a3bc.entry.js.map → p-47c60d4a.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-6cc730db.entry.js.map → p-4abbd0b1.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-4fb81d03.entry.js.map → p-578e3f98.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-c3650c2e.entry.js.map → p-597f8656.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-ce27270b.entry.js.map → p-59d34a17.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-3c0d391b.entry.js.map → p-5bc4d94c.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-c9f32e51.entry.js.map → p-6cacc879.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-f637136f.entry.js.map → p-7366d36d.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-68371e6d.entry.js.map → p-8e7b762a.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-ece07c0d.entry.js.map → p-9a28b93a.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-d3827468.entry.js.map → p-9c9a2550.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-15ca5c98.entry.js.map → p-9d743327.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-3fd4f83d.entry.js.map → p-a52371cf.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-f11326c2.entry.js.map → p-a53e9f1e.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-6e6b160d.entry.js.map → p-ac82ea35.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-8e8a40ca.entry.js.map → p-bfd69d42.entry.js.map} +0 -0
- /package/dist/q2-tecton-elements/{p-82bda2ff.entry.js.map → p-db6921fb.entry.js.map} +0 -0
|
@@ -18,10 +18,12 @@ const Q2CheckboxGroup$1 = /*@__PURE__*/ proxyCustomElement(class Q2CheckboxGroup
|
|
|
18
18
|
this.onInnerCheckboxChange = (event) => {
|
|
19
19
|
event.stopImmediatePropagation();
|
|
20
20
|
const groupValue = {};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
setTimeout(() => {
|
|
22
|
+
this.checkboxElements.forEach(check => {
|
|
23
|
+
groupValue[check.value] = !!check.checked;
|
|
24
|
+
});
|
|
25
|
+
this.change.emit(groupValue);
|
|
26
|
+
}, 0);
|
|
25
27
|
};
|
|
26
28
|
this.label = undefined;
|
|
27
29
|
this.value = undefined;
|
|
@@ -37,6 +39,9 @@ const Q2CheckboxGroup$1 = /*@__PURE__*/ proxyCustomElement(class Q2CheckboxGroup
|
|
|
37
39
|
return this.value || {};
|
|
38
40
|
}
|
|
39
41
|
///// LIFECYCLE HOOK ///////
|
|
42
|
+
componentWillLoad() {
|
|
43
|
+
this.updateReadonly(this.readonly);
|
|
44
|
+
}
|
|
40
45
|
componentDidLoad() {
|
|
41
46
|
const observer = new MutationObserver(this.onMutationObserved);
|
|
42
47
|
observer.observe(this.hostElement, { childList: true });
|
|
@@ -64,6 +69,19 @@ const Q2CheckboxGroup$1 = /*@__PURE__*/ proxyCustomElement(class Q2CheckboxGroup
|
|
|
64
69
|
checkbox.groupDisabled = groupDisabled;
|
|
65
70
|
});
|
|
66
71
|
}
|
|
72
|
+
updateReadonly(newReadonly) {
|
|
73
|
+
this.checkboxElements.forEach(checkbox => {
|
|
74
|
+
checkbox.readonly = newReadonly;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/// Methods ///
|
|
78
|
+
setValue(values) {
|
|
79
|
+
const valuesSet = new Set(Array.isArray(values) ? values : [values]);
|
|
80
|
+
this.checkboxElements.forEach(check => {
|
|
81
|
+
if (valuesSet.has(check.value))
|
|
82
|
+
check.click();
|
|
83
|
+
});
|
|
84
|
+
}
|
|
67
85
|
onHostElementChange(event) {
|
|
68
86
|
if (event.target === this.hostElement && !this.hostElement.onchange) {
|
|
69
87
|
this.value = event.detail;
|
|
@@ -78,7 +96,8 @@ const Q2CheckboxGroup$1 = /*@__PURE__*/ proxyCustomElement(class Q2CheckboxGroup
|
|
|
78
96
|
get hostElement() { return this; }
|
|
79
97
|
static get watchers() { return {
|
|
80
98
|
"value": ["valueUpdated"],
|
|
81
|
-
"disabled": ["updateDisabled"]
|
|
99
|
+
"disabled": ["updateDisabled"],
|
|
100
|
+
"readonly": ["updateReadonly"]
|
|
82
101
|
}; }
|
|
83
102
|
static get style() { return stylesCss; }
|
|
84
103
|
}, [1, "q2-checkbox-group", {
|
|
@@ -87,7 +106,8 @@ const Q2CheckboxGroup$1 = /*@__PURE__*/ proxyCustomElement(class Q2CheckboxGroup
|
|
|
87
106
|
"disabled": [516],
|
|
88
107
|
"readonly": [516],
|
|
89
108
|
"optional": [516],
|
|
90
|
-
"hasError": [516, "has-error"]
|
|
109
|
+
"hasError": [516, "has-error"],
|
|
110
|
+
"setValue": [64]
|
|
91
111
|
}, [[0, "change", "onHostElementChange"]]]);
|
|
92
112
|
function defineCustomElement$1() {
|
|
93
113
|
if (typeof customElements === "undefined") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"q2-checkbox-group.js","mappings":"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","names":["Q2CheckboxGroup"],"sources":["./src/components/q2-checkbox-group/styles.scss?tag=q2-checkbox-group&encapsulation=shadow","./src/components/q2-checkbox-group/index.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n\n:host {\n margin-top: var(--tct-scale-2, var(--app-scale-2x, 10px));\n}\n\nfieldset {\n padding: var(--tct-input-error-padding, 0);\n margin: 0;\n border: 0;\n}\n\nfieldset.has-error {\n border-color: var(--tct-input-error-border-color, var(--const-stoplight-alert, #c30000));\n border-width: 1px;\n border-style: solid;\n border-radius: var(--tct-border-radius-1, var(--app-border-radius-1, 2px));\n position: relative;\n}\n\nfieldset.has-error .error-icon-container {\n top: 8px;\n right: 8px;\n position: absolute;\n width: 40%;\n text-align: right;\n background: linear-gradient(\n to right,\n var(--tct-checkbox-group-error-gradient-start, var(--t-base-a0, rgba(255, 255, 255, 0))),\n var(--tct-checkbox-group-error-gradient-end, var(--t-base, rgba(255, 255, 255)))\n );\n}\n\nfieldset.has-error legend + div.error-icon-container.no-label {\n top: 28px;\n}\n\n.group-legend {\n font-weight: 600;\n}\n\nlegend.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n border: 0;\n}\n\n.optional-tag {\n margin-left: var(--tct-input-label-optional-margin-left, var(--tct-scale-1, var(--app-scale-1x, 5px)));\n color: var(\n --tct-input-label-optional-font-color,\n var(\n --tct-a11y-color,\n var(\n --t-a11y-gray-color,\n var(--tct-gray-7, var(--t-gray-7, var(--tct-gray-d1, var(--app-gray-d1, #666666))))\n )\n )\n );\n font-size: var(--tct-input-label-optional-font-size, 12px);\n font-weight: var(--tct-input-label-optional-font-weight, 400);\n}\n\n.flexed {\n margin: 0;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n}\n.flexed.left {\n justify-content: left;\n}\n","import { Component, Prop, Element, h, Listen, EventEmitter, Event, ComponentInterface, Watch } from '@stencil/core';\nimport { createGuid, loc } from 'src/utils';\n\n@Component({\n tag: 'q2-checkbox-group',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2CheckboxGroup implements ComponentInterface {\n @Prop({ reflect: true }) label: string;\n @Prop({ mutable: true }) value: object;\n @Prop({ reflect: true }) disabled: boolean = false;\n @Prop({ reflect: true }) readonly: boolean = false;\n @Prop({ reflect: true }) optional: boolean = false;\n @Prop({ reflect: true }) hasError: boolean = false;\n\n @Element() hostElement: HTMLElement;\n _id: string = `checkbox-group-${createGuid()}`;\n mutationObserver: MutationObserver;\n\n get checkboxElements() {\n return Array.from(this.hostElement.querySelectorAll('q2-checkbox')) as HTMLQ2CheckboxElement[];\n }\n\n get protectedValue(): object {\n return this.value || {};\n }\n\n onMutationObserved = () => {\n this.valueUpdated();\n this.updateDisabled();\n };\n\n onInnerCheckboxChange = (event: CustomEvent) => {\n event.stopImmediatePropagation();\n const groupValue = {};\n this.checkboxElements.forEach(check => {\n groupValue[check.value] = !!check.checked;\n });\n this.change.emit(groupValue);\n };\n\n ///// LIFECYCLE HOOK ///////\n\n componentDidLoad() {\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true });\n this.mutationObserver = observer;\n this.onMutationObserved();\n }\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n }\n\n @Watch('value')\n valueUpdated() {\n if (this.readonly) return;\n this.checkboxElements.forEach(check => {\n if (this.protectedValue.hasOwnProperty(check.value)) {\n check.checked = this.value[check.value];\n }\n });\n }\n\n @Watch('disabled')\n updateDisabled() {\n const groupDisabled = this.disabled;\n this.checkboxElements.forEach(checkbox => {\n checkbox.groupDisabled = groupDisabled;\n });\n }\n\n ///// HOST ELEMENT EVENTS ///////\n\n @Event() change: EventEmitter;\n\n @Listen('change')\n onHostElementChange(event: CustomEvent) {\n if (event.target === this.hostElement && !this.hostElement.onchange) {\n this.value = event.detail;\n }\n }\n\n render() {\n return (\n <div>\n {this.label || this.optional ? (\n <div class=\"group-legend\">\n {this.label && loc(this.label)}\n {this.optional ? <span class=\"optional-tag\">{loc('tecton.element.input.optional')}</span> : ''}\n </div>\n ) : (\n ''\n )}\n <fieldset\n class={`q2-checkbox-fieldset ${this.hasError ? 'has-error' : ''}`}\n onChange={this.onInnerCheckboxChange}\n aria-invalid={`${this.hasError}`}\n >\n {this.label || this.optional ? (\n <legend class=\"sr-only\">\n {this.label && loc(this.label)}\n {this.optional ? (\n <span class=\"optional-tag\">{loc('tecton.element.input.optional')}</span>\n ) : (\n ''\n )}\n </legend>\n ) : (\n ''\n )}\n {this.hasError ? (\n <div class={`error-icon-container ${this.label || this.optional ? '' : 'no-label'}`}>\n <q2-icon\n class=\"h(4) w(4) mrg-b(2)\"\n type=\"error\"\n ></q2-icon>\n </div>\n ) : (\n ''\n )}\n {this.inputDom()}\n </fieldset>\n </div>\n );\n }\n\n inputDom() {\n return <slot />;\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"q2-checkbox-group.js","mappings":"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","names":["Q2CheckboxGroup"],"sources":["./src/components/q2-checkbox-group/styles.scss?tag=q2-checkbox-group&encapsulation=shadow","./src/components/q2-checkbox-group/index.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n\n:host {\n margin-top: var(--tct-scale-2, var(--app-scale-2x, 10px));\n}\n\nfieldset {\n padding: var(--tct-input-error-padding, 0);\n margin: 0;\n border: 0;\n}\n\nfieldset.has-error {\n border-color: var(--tct-input-error-border-color, var(--const-stoplight-alert, #c30000));\n border-width: 1px;\n border-style: solid;\n border-radius: var(--tct-border-radius-1, var(--app-border-radius-1, 2px));\n position: relative;\n}\n\nfieldset.has-error .error-icon-container {\n top: 8px;\n right: 8px;\n position: absolute;\n width: 40%;\n text-align: right;\n background: linear-gradient(\n to right,\n var(--tct-checkbox-group-error-gradient-start, var(--t-base-a0, rgba(255, 255, 255, 0))),\n var(--tct-checkbox-group-error-gradient-end, var(--t-base, rgba(255, 255, 255)))\n );\n}\n\nfieldset.has-error legend + div.error-icon-container.no-label {\n top: 28px;\n}\n\n.group-legend {\n font-weight: 600;\n}\n\nlegend.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n border: 0;\n}\n\n.optional-tag {\n margin-left: var(--tct-input-label-optional-margin-left, var(--tct-scale-1, var(--app-scale-1x, 5px)));\n color: var(\n --tct-input-label-optional-font-color,\n var(\n --tct-a11y-color,\n var(\n --t-a11y-gray-color,\n var(--tct-gray-7, var(--t-gray-7, var(--tct-gray-d1, var(--app-gray-d1, #666666))))\n )\n )\n );\n font-size: var(--tct-input-label-optional-font-size, 12px);\n font-weight: var(--tct-input-label-optional-font-weight, 400);\n}\n\n.flexed {\n margin: 0;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n}\n.flexed.left {\n justify-content: left;\n}\n","import {\n Component,\n Prop,\n Element,\n h,\n Listen,\n EventEmitter,\n Event,\n ComponentInterface,\n Watch,\n Method,\n} from '@stencil/core';\nimport { createGuid, loc } from 'src/utils';\n\n@Component({\n tag: 'q2-checkbox-group',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2CheckboxGroup implements ComponentInterface {\n @Prop({ reflect: true }) label: string;\n @Prop({ mutable: true }) value: object;\n @Prop({ reflect: true }) disabled: boolean = false;\n @Prop({ reflect: true }) readonly: boolean = false;\n @Prop({ reflect: true }) optional: boolean = false;\n @Prop({ reflect: true }) hasError: boolean = false;\n\n @Element() hostElement: HTMLElement;\n _id: string = `checkbox-group-${createGuid()}`;\n mutationObserver: MutationObserver;\n\n get checkboxElements() {\n return Array.from(this.hostElement.querySelectorAll('q2-checkbox')) as HTMLQ2CheckboxElement[];\n }\n\n get protectedValue(): object {\n return this.value || {};\n }\n\n onMutationObserved = () => {\n this.valueUpdated();\n this.updateDisabled();\n };\n\n onInnerCheckboxChange = (event: CustomEvent) => {\n event.stopImmediatePropagation();\n const groupValue = {};\n setTimeout(() => {\n this.checkboxElements.forEach(check => {\n groupValue[check.value] = !!check.checked;\n });\n this.change.emit(groupValue);\n }, 0);\n };\n\n ///// LIFECYCLE HOOK ///////\n\n componentWillLoad() {\n this.updateReadonly(this.readonly);\n }\n\n componentDidLoad() {\n const observer = new MutationObserver(this.onMutationObserved);\n observer.observe(this.hostElement, { childList: true });\n this.mutationObserver = observer;\n this.onMutationObserved();\n }\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n }\n\n @Watch('value')\n valueUpdated() {\n if (this.readonly) return;\n this.checkboxElements.forEach(check => {\n if (this.protectedValue.hasOwnProperty(check.value)) {\n check.checked = this.value[check.value];\n }\n });\n }\n\n @Watch('disabled')\n updateDisabled() {\n const groupDisabled = this.disabled;\n this.checkboxElements.forEach(checkbox => {\n checkbox.groupDisabled = groupDisabled;\n });\n }\n\n @Watch('readonly')\n updateReadonly(newReadonly: boolean) {\n this.checkboxElements.forEach(checkbox => {\n checkbox.readonly = newReadonly;\n });\n }\n\n /// Methods ///\n @Method()\n setValue(values: string | string[]) {\n const valuesSet = new Set(Array.isArray(values) ? values : [values]);\n this.checkboxElements.forEach(check => {\n if (valuesSet.has(check.value)) check.click();\n });\n }\n\n ///// HOST ELEMENT EVENTS ///////\n\n @Event() change: EventEmitter;\n\n @Listen('change')\n onHostElementChange(event: CustomEvent) {\n if (event.target === this.hostElement && !this.hostElement.onchange) {\n this.value = event.detail;\n }\n }\n\n render() {\n return (\n <div>\n {this.label || this.optional ? (\n <div class=\"group-legend\">\n {this.label && loc(this.label)}\n {this.optional ? <span class=\"optional-tag\">{loc('tecton.element.input.optional')}</span> : ''}\n </div>\n ) : (\n ''\n )}\n <fieldset\n class={`q2-checkbox-fieldset ${this.hasError ? 'has-error' : ''}`}\n onChange={this.onInnerCheckboxChange}\n aria-invalid={`${this.hasError}`}\n >\n {this.label || this.optional ? (\n <legend class=\"sr-only\">\n {this.label && loc(this.label)}\n {this.optional ? (\n <span class=\"optional-tag\">{loc('tecton.element.input.optional')}</span>\n ) : (\n ''\n )}\n </legend>\n ) : (\n ''\n )}\n {this.hasError ? (\n <div class={`error-icon-container ${this.label || this.optional ? '' : 'no-label'}`}>\n <q2-icon\n class=\"h(4) w(4) mrg-b(2)\"\n type=\"error\"\n ></q2-icon>\n </div>\n ) : (\n ''\n )}\n {this.inputDom()}\n </fieldset>\n </div>\n );\n }\n\n inputDom() {\n return <slot />;\n }\n}\n"],"version":3}
|
|
@@ -6,7 +6,7 @@ import { d as defineCustomElement$4 } from './index6.js';
|
|
|
6
6
|
import { d as defineCustomElement$3 } from './index8.js';
|
|
7
7
|
import { d as defineCustomElement$2 } from './index10.js';
|
|
8
8
|
|
|
9
|
-
const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #33b4ff #06C)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:block}.container{--comp-cell-padding:var(--tct-table-cell-padding, var(--app-scale-3x, 15px));--comp-select-column-width:var(--tct-table-select-column-width, var(--tct-checkbox-size, 20px));--comp-dropdown-column-width:var(--tct-table-dropdown-column-width, var(--tct-btn-icon-width, 44px));--comp-expandable-row-control-column-width:var(--tct-table-expandable-row-control-column-width, var(--tct-btn-icon-width, 44px));overflow:auto;--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 3px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}.container::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.container::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.container::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}:host([shadowed]:not([shadowed=false])) .container{box-shadow:var(--tct-table-shadow, var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3)))}:host([density=compact]) .container{--comp-cell-padding:var(--tct-table-cell-padding-compact, var(--app-scale-1x, 5px))}:host([density=comfortable]) .container{--comp-cell-padding:var(--tct-table-cell-padding-comfortable, var(--app-scale-5x, 25px))}table{table-layout:var(--tct-table-layout, auto);border-collapse:collapse;border-spacing:0;width:var(--tct-table-width);min-width:100%;background:var(--tct-table-background, var(--t-base, #ffffff));caption-side:var(--tct-table-caption-side, bottom)}thead{border-width:var(--tct-table-header-border-width, 0 0 2px 0);border-style:var(--tct-table-header-border-style, solid);border-color:var(--tct-table-header-border-color, var(--t-gray-9, #999999));background:var(--tct-table-header-background)}col.select-column{width:var(--comp-select-column-width)}col.expandable-row-control-column{width:var(--comp-expandable-row-control-column-width)}col.dropdown-column{width:var(--comp-dropdown-column-width)}td,th{padding:var(--comp-cell-padding);text-align:start}td.align-end,th.align-end{text-align:end}td.align-center,th.align-center{text-align:center}th .header-content{font-weight:var(--tct-table-header-font-weight, 400)}th.sorted .header-content{font-weight:var(--tct-table-header-sorted-font-weight, 600)}th .sorted-indicator{--comp-header-sortable-icon-size:var(--tct-table-header-sortable-icon-size, var(--app-scale-3x, 15px));--tct-icon-stroke-width:2;width:var(--comp-header-sortable-icon-size);height:var(--comp-header-sortable-icon-size)}th .sorted-indicator.direction-ASC{transform:rotate(180deg)}th q2-btn .header-content{display:flex;align-items:center;gap:var(--tct-table-header-content-gap, var(--app-scale-2x, 10px))}tr.expandable,tr.clickable{cursor:pointer}tr.expandable:focus,tr.clickable:focus{outline:none;box-shadow:none}tr.expandable:hover{background:var(--tct-table-expandable-row-hover-background, var(--t-gray-14, #f2f2f2))}tr.clickable:hover{background:var(--tct-table-clickable-row-hover-background, var(--t-gray-14, #f2f2f2))}tr.selected{background:var(--tct-table-selected-row-background, var(--t-gray-14, #f2f2f2))}tr.expanded{background:var(--tct-table-expanded-row-background, var(--t-gray-14, #f2f2f2))}tr.expanded .toggle-expandable-row{transform:rotate(180deg)}:host([bordered]:not([bordered=false])) tbody tr{border-width:var(--tct-table-row-border-width, 0 0 1px 0);border-style:var(--tct-table-row-border-style, solid);border-color:var(--tct-table-row-border-color, var(--t-gray-9, #999999))}tr.loading-row{background:var(--tct-table-loading-row-background, var(--t-base, #ffffff))}tr.loading-row td{text-align:center}tr.loading-row q2-loading{font-size:4em}tr.expandable-row{background:var(--tct-table-expanded-row-background, var(--t-gray-14, #f2f2f2))}td.clamped div{text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line-clamp:var(--comp-line-clamp-count, 1);-webkit-box-orient:vertical}td.expandable-row-control-column{--tct-btn-icon-hover-bg:transparent;padding:var(--tct-table-expandable-row-control-column-padding, 0 var(--app-scale-1x, 5px));text-align:center}td.dropdown-column{padding:var(--tct-table-dropdown-column-padding, 0 var(--app-scale-1x, 5px));text-align:center}td.click-column:not(.sr){padding:var(--tct-table-clickable-column-padding, 0 var(--app-scale-1x, 5px));text-align:center}caption{padding:var(--tct-table-caption-padding, var(--app-scale-2x, 10px));font-size:var(--tct-table-caption-font-size, inherit);font-weight:var(--tct-table-caption-font-weight, 600);text-align:var(--tct-table-caption-text-align, center);color:var(--tct-table-caption-color, inherit)}q2-checkbox{padding:0}";
|
|
9
|
+
const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #33b4ff #06C)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:block}.container{--comp-cell-padding:var(--tct-data-table-cell-padding, var(--tct-table-cell-padding, var(--app-scale-3x, 15px)));--comp-select-column-width:var(--tct-data-table-select-column-width, var(--tct-table-select-column-width, var(--tct-checkbox-size, 20px)));--comp-dropdown-column-width:var(--tct-data-table-dropdown-column-width, var(--tct-table-dropdown-column-width, var(--tct-btn-icon-width, 44px)));--comp-expandable-row-control-column-width:var(--tct-data-table-expandable-row-control-column-width, var(--tct-table-expandable-row-control-column-width, var(--tct-btn-icon-width, 44px)));overflow:auto;--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 3px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}.container::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.container::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.container::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}:host([shadowed]:not([shadowed=false])) .container{box-shadow:var(--tct-data-table-shadow, var(--tct-table-shadow, var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3))))}:host([density=compact]) .container{--comp-cell-padding:var(--tct-data-table-cell-padding-compact, var(--tct-table-cell-padding-compact, var(--app-scale-1x, 5px)))}:host([density=comfortable]) .container{--comp-cell-padding:var(--tct-data-table-cell-padding-comfortable, var(--tct-table-cell-padding-comfortable, var(--app-scale-5x, 25px)))}table{table-layout:var(--tct-data-table-layout, var(--tct-table-layout, auto));border-collapse:collapse;border-spacing:0;width:var(--tct-data-table-width, var(--tct-table-width));min-width:100%;background:var(--tct-data-table-background, var(--tct-table-background, var(--t-base, #ffffff)));caption-side:var(--tct-data-table-caption-side, var(--tct-table-caption-side, bottom))}thead{border-width:var(--tct-data-table-header-border-width, var(--tct-table-header-border-width, 0 0 2px 0));border-style:var(--tct-data-table-header-border-style, var(--tct-table-header-border-style, solid));border-color:var(--tct-data-table-header-border-color, var(--tct-table-header-border-color, var(--t-gray-9, #999999)));background:var(--tct-data-table-header-background, var(--tct-table-header-background))}col.select-column{width:var(--comp-select-column-width)}col.expandable-row-control-column{width:var(--comp-expandable-row-control-column-width)}col.dropdown-column{width:var(--comp-dropdown-column-width)}td,th{padding:var(--comp-cell-padding);text-align:start}td.align-end,th.align-end{text-align:end}td.align-center,th.align-center{text-align:center}th .header-content{font-weight:var(--tct-data-table-header-font-weight, var(--tct-table-header-font-weight, 400));font-size:var(--tct-data-table-header-font-size, var(--app-font-size, 14px))}th.sorted .header-content{font-weight:var(--tct-data-table-header-sorted-font-weight, var(--tct-table-header-sorted-font-weight, 600))}th .sorted-indicator{--comp-header-sortable-icon-size:var(--tct-data-table-header-sortable-icon-size, var(--tct-table-header-sortable-icon-size, var(--app-scale-3x, 15px)));--tct-icon-stroke-width:2;width:var(--comp-header-sortable-icon-size);height:var(--comp-header-sortable-icon-size)}th .sorted-indicator.direction-ASC{transform:rotate(180deg)}th q2-btn .header-content{display:flex;align-items:center;gap:var(--tct-data-table-header-content-gap, var(--tct-table-header-content-gap, var(--app-scale-2x, 10px)))}tr.expandable,tr.clickable{cursor:pointer}tr.expandable:focus,tr.clickable:focus{outline:none;box-shadow:none}tr.expandable:hover{background:var(--tct-data-table-expandable-row-hover-background, var(--tct-table-expandable-row-hover-background, var(--t-gray-14, #f2f2f2)))}tr.clickable:hover{background:var(--tct-data-table-clickable-row-hover-background, var(--tct-table-clickable-row-hover-background, var(--t-gray-14, #f2f2f2)))}tr.selected{background:var(--tct-data-table-selected-row-background, var(--tct-table-selected-row-background, var(--t-gray-14, #f2f2f2)))}tr.expanded{background:var(--tct-data-table-expanded-row-background, var(--tct-table-expanded-row-background, var(--t-gray-14, #f2f2f2)))}tr.expanded .toggle-expandable-row{transform:rotate(180deg)}:host([bordered]:not([bordered=false])) tbody tr{border-width:var(--tct-data-table-row-border-width, var(--tct-table-row-border-width, 0 0 1px 0));border-style:var(--tct-data-table-row-border-style, var(--tct-table-row-border-style, solid));border-color:var(--tct-data-table-row-border-color, var(--tct-table-row-border-color, var(--t-gray-9, #999999)))}tr.loading-row{background:var(--tct-data-table-loading-row-background, var(--tct-table-loading-row-background, var(--t-base, #ffffff)))}tr.loading-row td{text-align:center}tr.loading-row q2-loading{font-size:4em}tr.expandable-row{background:var(--tct-data-table-expanded-row-background, var(--tct-table-expanded-row-background, var(--t-gray-14, #f2f2f2)))}td.clamped div{text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line-clamp:var(--comp-line-clamp-count, 1);-webkit-box-orient:vertical}td.expandable-row-control-column{--tct-btn-icon-hover-bg:transparent;padding:var(--tct-data-table-expandable-row-control-column-padding, var(--tct-table-expandable-row-control-column-padding, 0 var(--app-scale-1x, 5px)));text-align:center}td.dropdown-column{padding:var(--tct-data-table-dropdown-column-padding, var(--tct-table-dropdown-column-padding, 0 var(--app-scale-1x, 5px)));text-align:center}td.click-column:not(.sr){padding:var(--tct-data-table-clickable-column-padding, var(--tct-table-clickable-column-padding, 0 var(--app-scale-1x, 5px)));text-align:center}caption{padding:var(--tct-data-table-caption-padding, var(--tct-table-caption-padding, var(--app-scale-2x, 10px)));font-size:var(--tct-data-table-caption-font-size, var(--tct-table-caption-font-size, inherit));font-weight:var(--tct-data-table-caption-font-weight, var(--tct-table-caption-font-weight, 600));text-align:var(--tct-data-table-caption-text-align, var(--tct-table-caption-text-align, center));color:var(--tct-data-table-caption-color, var(--tct-table-caption-color, inherit))}q2-checkbox{padding:0}";
|
|
10
10
|
|
|
11
11
|
const Q2DataTable$1 = /*@__PURE__*/ proxyCustomElement(class Q2DataTable extends HTMLElement {
|
|
12
12
|
constructor() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"q2-data-table.js","mappings":"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","names":["Q2DataTable"],"sources":["./src/components/q2-data-table/styles.scss?tag=q2-data-table&encapsulation=shadow","./src/components/q2-data-table/index.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: block;\n}\n\n.container {\n --comp-cell-padding: #{var-list(--tct-table-cell-padding, --app-scale-3x, 15px)};\n --comp-select-column-width: #{var-list(--tct-table-select-column-width, --tct-checkbox-size, 20px)};\n --comp-dropdown-column-width: #{var-list(--tct-table-dropdown-column-width, --tct-btn-icon-width, 44px)};\n --comp-expandable-row-control-column-width: #{var-list(\n --tct-table-expandable-row-control-column-width,\n --tct-btn-icon-width,\n 44px\n )};\n\n overflow: auto;\n @include tiny-scrollbar();\n\n :host([shadowed]:not([shadowed='false'])) & {\n box-shadow: var-list(--tct-table-shadow, --app-shadow-1, unquote('0 2px 4px rgba(0, 0, 0, 0.3)'));\n }\n\n :host([density='compact']) & {\n --comp-cell-padding: #{var-list(--tct-table-cell-padding-compact, --app-scale-1x, 5px)};\n }\n\n :host([density='comfortable']) & {\n --comp-cell-padding: #{var-list(--tct-table-cell-padding-comfortable, --app-scale-5x, 25px)};\n }\n}\n\ntable {\n table-layout: var-list(--tct-table-layout, auto);\n border-collapse: collapse;\n border-spacing: 0;\n width: var-list(--tct-table-width);\n min-width: 100%;\n background: var-list(--tct-table-background, --t-base, #ffffff);\n caption-side: var-list(--tct-table-caption-side, bottom);\n}\n\nthead {\n border-width: var-list(--tct-table-header-border-width, unquote('0 0 2px 0'));\n border-style: var-list(--tct-table-header-border-style, solid);\n border-color: var-list(--tct-table-header-border-color, --t-gray-9, #999999);\n background: var-list(--tct-table-header-background);\n}\n\ncol {\n &.select-column {\n width: var(--comp-select-column-width);\n }\n\n &.expandable-row-control-column {\n width: var(--comp-expandable-row-control-column-width);\n }\n\n &.dropdown-column {\n width: var(--comp-dropdown-column-width);\n }\n}\n\ntd,\nth {\n padding: var(--comp-cell-padding);\n text-align: start;\n\n &.align-end {\n text-align: end;\n }\n &.align-center {\n text-align: center;\n }\n}\n\nth {\n .header-content {\n font-weight: var-list(--tct-table-header-font-weight, 400);\n }\n\n &.sorted {\n .header-content {\n font-weight: var-list(--tct-table-header-sorted-font-weight, 600);\n }\n }\n\n .sorted-indicator {\n --comp-header-sortable-icon-size: #{var-list(--tct-table-header-sortable-icon-size, --app-scale-3x, 15px)};\n --tct-icon-stroke-width: 2;\n\n width: var(--comp-header-sortable-icon-size);\n height: var(--comp-header-sortable-icon-size);\n\n &.direction-ASC {\n transform: rotate(180deg);\n }\n }\n\n q2-btn {\n .header-content {\n display: flex;\n align-items: center;\n gap: var-list(--tct-table-header-content-gap, --app-scale-2x, 10px);\n }\n }\n}\n\ntr {\n &.expandable,\n &.clickable {\n cursor: pointer;\n\n &:focus {\n outline: none;\n box-shadow: none;\n }\n }\n\n &.expandable {\n &:hover {\n background: var-list(--tct-table-expandable-row-hover-background, --t-gray-14, #f2f2f2);\n }\n }\n\n &.clickable {\n &:hover {\n background: var-list(--tct-table-clickable-row-hover-background, --t-gray-14, #f2f2f2);\n }\n }\n\n &.selected {\n background: var-list(--tct-table-selected-row-background, --t-gray-14, #f2f2f2);\n }\n\n &.expanded {\n background: var-list(--tct-table-expanded-row-background, --t-gray-14, #f2f2f2);\n\n .toggle-expandable-row {\n transform: rotate(180deg);\n }\n }\n\n :host([bordered]:not([bordered='false'])) tbody & {\n border-width: var-list(--tct-table-row-border-width, unquote('0 0 1px 0'));\n border-style: var-list(--tct-table-row-border-style, solid);\n border-color: var-list(--tct-table-row-border-color, --t-gray-9, #999999);\n }\n\n &.loading-row {\n background: var-list(--tct-table-loading-row-background, --t-base, #ffffff);\n td {\n text-align: center;\n }\n\n q2-loading {\n font-size: 4em;\n }\n }\n\n &.expandable-row {\n background: var-list(--tct-table-expanded-row-background, --t-gray-14, #f2f2f2);\n }\n}\n\ntd {\n &.clamped {\n div {\n text-overflow: ellipsis;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: var(--comp-line-clamp-count, 1);\n -webkit-box-orient: vertical;\n }\n }\n\n &.expandable-row-control-column {\n --tct-btn-icon-hover-bg: transparent;\n padding: var-list(--tct-table-expandable-row-control-column-padding, unquote('0 var(--app-scale-1x, 5px)'));\n text-align: center;\n }\n\n &.dropdown-column {\n padding: var-list(--tct-table-dropdown-column-padding, unquote('0 var(--app-scale-1x, 5px)'));\n text-align: center;\n }\n\n &.click-column:not(.sr) {\n padding: var-list(--tct-table-clickable-column-padding, unquote('0 var(--app-scale-1x, 5px)'));\n text-align: center;\n }\n}\n\ncaption {\n padding: var-list(--tct-table-caption-padding, --app-scale-2x, 10px);\n font-size: var-list(--tct-table-caption-font-size, inherit);\n font-weight: var-list(--tct-table-caption-font-weight, 600);\n text-align: var-list(--tct-table-caption-text-align, center);\n color: var-list(--tct-table-caption-color, inherit);\n}\n\nq2-checkbox {\n padding: 0;\n}\n","import {\n Component,\n State,\n Prop,\n h,\n ComponentInterface,\n Watch,\n Event,\n Element,\n EventEmitter,\n Fragment,\n Listen,\n} from '@stencil/core';\nimport { loc, resizeIframe } from '../../utils';\n\nexport type Q2DataTableCellAlignOptions = 'start' | 'center' | 'end';\nexport type Q2DataTableCellType =\n | {\n type?: 'text' | 'number' | 'icon' | 'boolean' | 'code';\n }\n | {\n type?: 'badge';\n badgeStatus?: HTMLQ2BadgeElement['status'];\n badgeTheme?: HTMLQ2BadgeElement['theme'];\n };\n\nexport type Q2DataTableHeader = {\n title: string;\n align?: Q2DataTableCellAlignOptions;\n key?: string;\n sortable?: boolean;\n width?: string;\n backgroundColor?: string;\n sorted?: 'ASC' | 'DESC';\n ariaLabel?: string;\n lineClamp?: number;\n} & Partial<Q2DataTableCellType>;\n\nexport type Q2DataTableCell = {\n value: string | number | boolean;\n align?: Q2DataTableCellAlignOptions;\n ariaLabel?: string;\n lineClamp?: number;\n} & Q2DataTableCellType;\n\nexport type Q2DataTableBaseRow = {\n id: string | number;\n selected?: boolean;\n expanded?: boolean;\n};\n\nexport type Q2DataTableCells = Record<string, string | number | Q2DataTableCell>;\nexport type Q2DataTableSerializedCells = Record<string, Q2DataTableCell>;\n\nexport type Q2DataTableRow = Q2DataTableBaseRow & {\n cells: Q2DataTableCells;\n};\nexport type Q2DataTableSerializedRow = Q2DataTableBaseRow & {\n cells: Q2DataTableSerializedCells;\n};\n\n@Component({\n tag: 'q2-data-table',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2DataTable implements ComponentInterface {\n @Prop({ mutable: true, reflect: true }) density: 'compact' | 'normal' | 'comfortable';\n @Prop({ mutable: true, reflect: true }) bordered: boolean;\n @Prop({ mutable: true, reflect: true }) shadowed: boolean;\n @Prop({ mutable: true, reflect: true }) selectable: boolean;\n @Prop({ mutable: true, reflect: true }) clickable: boolean;\n @Prop({ mutable: true, reflect: true }) loading: boolean;\n @Prop({ mutable: true, reflect: true }) hideCaption: boolean;\n @Prop({ mutable: true }) caption: string;\n @Prop({ mutable: true }) selectMode: 'multiple' | 'single' = 'multiple';\n @Prop({ mutable: true }) hideClickable: boolean;\n\n @Prop({ mutable: true }) headers: Q2DataTableHeader[];\n @Prop({ mutable: true }) rows: Q2DataTableRow[];\n\n @Element() hostElement: HTMLElement;\n\n @State() serializedHeaders: Q2DataTableHeader[] = [];\n @State() serializedRows: Q2DataTableSerializedRow[] = [];\n @State() hasExpandableRows: boolean = false;\n @State() hasDropdowns: boolean = false;\n @State() allRowsSelected: boolean = false;\n @State() checkSlotCount: number = 0;\n\n @Event() select: EventEmitter<{\n row: Q2DataTableSerializedRow;\n rows: Q2DataTableSerializedRow[];\n allSelected: boolean;\n }>;\n @Event() click: EventEmitter<{ row: Q2DataTableSerializedRow }>;\n @Event() toggle: EventEmitter<{ row: Q2DataTableSerializedRow }>;\n @Event() sort: EventEmitter<{ header: Q2DataTableHeader; direction: 'ASC' | 'DESC' }>;\n\n mutationObserver: MutationObserver;\n resizeObserver: ResizeObserver;\n\n /// LifeCycle Hooks ///\n componentWillLoad() {\n this.headersHandler(this.headers);\n this.rowsHandler(this.rows);\n }\n\n componentDidLoad(): void {\n if (typeof MutationObserver !== 'undefined') {\n const observer = new MutationObserver(() => this.checkSlots());\n observer.observe(this.hostElement, { childList: true, subtree: true, attributes: true });\n this.mutationObserver = observer;\n }\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => resizeIframe());\n this.resizeObserver.observe(this.hostElement);\n }\n }\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n\n /// Getters ///\n get selectedRows() {\n return this.serializedRows.filter(({ selected }) => selected);\n }\n\n get selectedRow() {\n return this.selectedRows.find(({ selected }) => !!selected);\n }\n\n get numberOfColumns() {\n return (\n (this.serializedHeaders?.length ?? 0) +\n (this.selectable ? 1 : 0) +\n (this.clickable ? 1 : 0) +\n (this.hasExpandableRows ? 1 : 0) +\n (this.hasDropdowns ? 1 : 0)\n );\n }\n\n get mappedHeaders() {\n return this.serializedHeaders.reduce<Record<string, Q2DataTableHeader>>((accum, header) => {\n accum[header.key] = header;\n return accum;\n }, {});\n }\n\n /// Helpers ///\n sortRows(rows: Q2DataTableSerializedRow[], header: Q2DataTableHeader) {\n const { key, sorted } = header;\n const direction = sorted || 'ASC';\n\n const sortedRows = [...rows].sort((a, b) => {\n const aValue = a.cells[key].value;\n const bValue = b.cells[key].value;\n\n if (aValue < bValue) return direction === 'ASC' ? -1 : 1;\n if (aValue > bValue) return direction === 'ASC' ? 1 : -1;\n return 0;\n });\n\n return sortedRows;\n }\n\n checkSlots = () => {\n this.hasExpandableRows = !!(this.hostElement?.querySelector(`[slot$=\"-expandable-content\"]`) ?? false);\n this.hasDropdowns = !!(this.hostElement?.querySelector(`[slot$=\"-dropdown\"]`) ?? false);\n\n // The booleans above may not change, event if the slot content\n // So we increment this property to force a re-render and ensure proper rendering\n this.checkSlotCount += 1;\n };\n\n /// Watchers ///\n @Watch('headers')\n headersHandler(headers: Q2DataTableHeader[] = []) {\n this.serializedHeaders = headers.map<Q2DataTableHeader>(header => {\n const { title } = header;\n let { key } = header;\n\n // If no key is provided, generate one from the title\n if (!key) key = title.toLowerCase().replace(/\\s/g, '-');\n\n return {\n key,\n ...header,\n };\n });\n }\n\n @Watch('rows')\n rowsHandler(rows: Q2DataTableRow[] = []) {\n const { serializedHeaders, mappedHeaders } = this;\n const defaultRow = {\n id: null,\n cells: {},\n selected: false,\n expanded: false,\n };\n\n const serializedRows = rows.map(({ id, cells, selected, expanded }) => {\n const serializedCells = Object.entries(cells).reduce<Q2DataTableSerializedCells>(\n (accum, [cellKey, cellData]) => {\n const header = mappedHeaders[cellKey] || ({} as Q2DataTableHeader);\n const { align, type = 'text', lineClamp } = header;\n\n const isBadge = 'type' in header && header.type === 'badge';\n const defaultCell: Q2DataTableCell = {\n value: '',\n ariaLabel: undefined,\n type,\n align,\n lineClamp,\n badgeStatus: isBadge ? header.badgeStatus : undefined,\n badgeTheme: isBadge ? header.badgeTheme : undefined,\n };\n\n const result: Q2DataTableCell =\n typeof cellData === 'object'\n ? { ...defaultCell, ...cellData }\n : { ...defaultCell, value: cellData };\n\n accum[cellKey] = result;\n return accum;\n },\n {}\n );\n return { ...defaultRow, id, selected: !!selected, expanded: !!expanded, cells: serializedCells };\n });\n\n const sortedHeader = serializedHeaders.find(({ sorted }) => sorted);\n\n this.serializedRows = !!sortedHeader ? this.sortRows(serializedRows, sortedHeader) : serializedRows;\n this.checkSlots();\n }\n\n /// Listeners ///\n @Listen('click')\n onClickListener(event: MouseEvent) {\n if (event instanceof PointerEvent) event.stopImmediatePropagation();\n }\n\n /// Event Handlers ///\n onSort = (header: Q2DataTableHeader) => {\n const direction = header.sorted === 'ASC' ? 'DESC' : 'ASC';\n const sortKey = header.key;\n const sortEvent = this.sort.emit({ header, direction });\n if (sortEvent.defaultPrevented) return;\n\n this.serializedHeaders = this.serializedHeaders.map<Q2DataTableHeader>(serializedHeader => {\n const sorted = sortKey === serializedHeader.key ? direction : undefined;\n return { ...serializedHeader, sorted };\n });\n this.serializedRows = this.sortRows(this.serializedRows, { ...header, sorted: direction });\n };\n\n onSelectAllRows = (event: CustomEvent<{ checked: boolean }>) => {\n event.stopPropagation();\n const { checked } = event.detail;\n const selectedRows = checked\n ? this.serializedRows.map(row => ({\n ...row,\n selected: checked,\n }))\n : [];\n const selectEvent = this.select.emit({ row: undefined, rows: selectedRows, allSelected: checked });\n if (selectEvent.defaultPrevented) return;\n\n this.serializedRows = this.serializedRows.map(row => {\n row.selected = checked;\n return row;\n });\n this.allRowsSelected = checked;\n };\n\n onSelectRow = (event: CustomEvent<{ checked: boolean }>, row: Q2DataTableSerializedRow) => {\n event.stopPropagation();\n const { selectMode, serializedRows, selectedRows: currentlySelectedRows } = this;\n const { checked } = event.detail;\n\n const selectedRow = { ...row, selected: checked };\n let selectedRows;\n if (selectMode === 'single') {\n selectedRows = checked ? [selectedRow] : [];\n } else {\n selectedRows = checked\n ? [...currentlySelectedRows, selectedRow]\n : currentlySelectedRows.filter(row => row.id !== selectedRow.id);\n }\n\n const allRowsSelected = selectedRows.length === serializedRows.length;\n const selectEvent = this.select.emit({ row: selectedRow, rows: selectedRows, allSelected: allRowsSelected });\n if (selectEvent.defaultPrevented) return;\n\n this.serializedRows = this.serializedRows.map(row => (row.id === selectedRow.id ? selectedRow : row));\n this.allRowsSelected = allRowsSelected;\n };\n\n onClickTableRow = (event: MouseEvent, row: Q2DataTableSerializedRow) => {\n if (this.clickable) {\n this.onClickRow(event, row);\n } else if (this.hasExpandableRows) {\n this.onToggleRow(event, row);\n }\n };\n\n onClickRow = (event: MouseEvent, row: Q2DataTableSerializedRow) => {\n event.stopPropagation();\n this.click.emit({ row });\n };\n\n onToggleRow = (event: MouseEvent, row: Q2DataTableSerializedRow) => {\n event.stopPropagation();\n const selectedRow = { ...row, expanded: !row.expanded };\n const toggleEvent = this.toggle.emit({ row: selectedRow });\n if (toggleEvent.defaultPrevented) return;\n\n this.serializedRows = this.serializedRows.map(row => {\n if (row.id === selectedRow.id) return selectedRow;\n else return { ...row };\n });\n };\n\n onControlContainerClick = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n /// DOM ///\n\n render() {\n const { caption } = this;\n return (\n <div class=\"container\">\n <table>\n {caption && <caption class={this.hideCaption ? 'sr' : undefined}>{caption}</caption>}\n {this.renderTableColGroup()}\n {this.renderTableHeader()}\n {this.renderTableRows()}\n </table>\n </div>\n );\n }\n\n renderTableColGroup() {\n const { serializedHeaders: headers, selectable, clickable, hasExpandableRows, hasDropdowns } = this;\n\n if (!headers.length) return null;\n\n return (\n <colgroup>\n {selectable && <col class=\"select-column\" />}\n {headers.map(({ width, backgroundColor }) => (\n <col style={{ width, backgroundColor }} />\n ))}\n {clickable && <col class=\"click-column\" />}\n {hasExpandableRows && <col class=\"expandable-row-control-column\" />}\n {hasDropdowns && <col class=\"dropdown-column\" />}\n </colgroup>\n );\n }\n\n renderTableHeader() {\n const {\n serializedHeaders: headers,\n selectable,\n clickable,\n hideClickable,\n selectMode,\n hasExpandableRows,\n hasDropdowns,\n } = this;\n\n if (!headers.length) return null;\n\n return (\n <thead>\n <tr>\n {selectable && (\n <th>\n {selectMode === 'multiple' && (\n <q2-checkbox\n label={loc('tecton.element.dataTable.selectAllRows')}\n hide-label\n onChange={this.onSelectAllRows}\n checked={this.allRowsSelected}\n disabled={this.loading}\n test-id=\"select-all-rows-control\"\n ></q2-checkbox>\n )}\n </th>\n )}\n {headers.map(header => {\n const { align, sorted } = header;\n const headerClasses = [];\n if (align) headerClasses.push(`align-${align}`);\n if (!!sorted) headerClasses.push('sorted');\n return (\n <th\n class={headerClasses.join(' ')}\n id={`header-${header.key}`}\n >\n {header.sortable ? (\n <q2-btn\n onClick={() => this.onSort(header)}\n test-id=\"sort-control\"\n disabled={this.loading}\n >\n <div\n class=\"header-content\"\n aria-label={header.ariaLabel || undefined}\n >\n {header.title}\n\n {!!sorted ? (\n <q2-icon\n class={`sorted-indicator direction-${sorted}`}\n type=\"arrow-down\"\n label={\n sorted === 'ASC'\n ? loc('tecton.element.dataTable.sortedAscending')\n : loc('tecton.element.dataTable.sortedDescending')\n }\n test-id=\"sorted-indicator\"\n ></q2-icon>\n ) : (\n <q2-icon\n class={`sorted-indicator`}\n type=\"sort\"\n label={loc('tecton.element.dataTable.clickToSort')}\n test-id=\"sorted-indicator\"\n ></q2-icon>\n )}\n </div>\n </q2-btn>\n ) : (\n <div\n class=\"header-content\"\n aria-label={header.ariaLabel || undefined}\n >\n {header.title}\n </div>\n )}\n </th>\n );\n })}\n {clickable && (\n <th\n id=\"click\"\n class={hideClickable ? 'sr' : undefined}\n >\n <span class=\"sr\">{loc('tecton.element.dataTable.clickRow')}</span>\n </th>\n )}\n {hasExpandableRows && (\n <th id=\"toggle\">\n <span class=\"sr\">{loc('tecton.element.dataTable.toggleRow')}</span>\n </th>\n )}\n {hasDropdowns && (\n <th>\n <span class=\"sr\">{loc('tecton.element.dataTable.dropdown')}</span>\n </th>\n )}\n </tr>\n </thead>\n );\n }\n\n renderTableRows() {\n const {\n serializedHeaders: headers,\n serializedRows: rows,\n selectable,\n clickable,\n hideClickable,\n selectMode,\n hasExpandableRows,\n hasDropdowns,\n numberOfColumns,\n loading,\n } = this;\n\n if (loading) {\n return (\n <tbody>\n <tr class=\"loading-row\">\n <td colSpan={numberOfColumns}>\n <q2-loading inline></q2-loading>\n </td>\n </tr>\n </tbody>\n );\n }\n\n if (!rows.length) return;\n\n let isSelectDisabled = false;\n let selectedRow;\n if (selectMode === 'single') {\n selectedRow = this.selectedRow;\n isSelectDisabled = !!selectedRow;\n }\n const clickableClasses = [];\n if (clickable) clickableClasses.push('click-column');\n if (hideClickable) clickableClasses.push('sr');\n const clickableClassString = clickableClasses.join(' ');\n\n return (\n <tbody>\n {rows.map(row => {\n const cellSlotPrefix = `row-${row.id}-cell`;\n const expandableRowName = `row-${row.id}-expandable-content`;\n const dropdownCellName = `row-${row.id}-dropdown`;\n const rowHasExpandableSlot =\n hasExpandableRows && !!this.hostElement.querySelector(`[slot=\"${expandableRowName}\"]`);\n const rowHasDropdownSlot =\n hasDropdowns && !!this.hostElement.querySelector(`[slot=\"${dropdownCellName}\"]`);\n const rowClasses = [];\n if (rowHasExpandableSlot) rowClasses.push('expandable');\n if (clickable) rowClasses.push('clickable');\n if (row.expanded) rowClasses.push('expanded');\n if (row.selected) rowClasses.push('selected');\n const rowIsClickable = clickable || rowHasExpandableSlot;\n\n return (\n <Fragment>\n <tr\n id={`row-${row.id}`}\n class={rowClasses.join(' ')}\n onClick={rowIsClickable && (e => this.onClickTableRow(e, row))}\n tabIndex={rowIsClickable ? -1 : undefined}\n >\n {selectable && (\n <td\n class=\"select-column\"\n onClick={this.onControlContainerClick}\n >\n <q2-checkbox\n label={loc('tecton.element.dataTable.selectRow')}\n hide-label\n checked={row.selected}\n disabled={isSelectDisabled && row !== selectedRow}\n onChange={e => this.onSelectRow(e, row)}\n test-id=\"select-row-control\"\n ></q2-checkbox>\n </td>\n )}\n {headers.map(({ key }) => {\n const cell = row.cells[key];\n const lineClamp = cell?.lineClamp;\n const cellAlign = cell?.align;\n const cellClasses = [];\n if (cellAlign) cellClasses.push(`align-${cellAlign}`);\n if (lineClamp) cellClasses.push('clamped');\n const cellStyles = lineClamp\n ? { '--comp-line-clamp-count': `${lineClamp}` }\n : undefined;\n\n return (\n <td\n class={cellClasses.join(' ')}\n style={cellStyles}\n >\n <slot name={`${cellSlotPrefix}-${key}`}>\n {this.renderCellContent(cell)}\n </slot>\n </td>\n );\n })}\n {clickable && (\n <td class={clickableClassString}>\n <q2-btn\n intent=\"neutral\"\n size=\"small\"\n onClick={e => this.onClickRow(e, row)}\n test-id=\"clickable-row-control\"\n >\n {loc('tecton.element.dataTable.clickRow')}\n </q2-btn>\n </td>\n )}\n {hasExpandableRows && (\n <td\n class=\"expandable-row-control-column\"\n onClick={this.onControlContainerClick}\n >\n {rowHasExpandableSlot && (\n <q2-btn\n onClick={e => this.onToggleRow(e, row)}\n ariaExpanded={`${row.expanded}`}\n ariaControls={expandableRowName}\n ariaLabel={loc('tecton.element.dataTable.toggleRow')}\n test-id=\"expandable-row-control\"\n >\n <q2-icon\n type=\"chevron-down\"\n class=\"toggle-expandable-row\"\n ></q2-icon>\n </q2-btn>\n )}\n </td>\n )}\n {hasDropdowns && (\n <td\n class=\"dropdown-column\"\n onClick={this.onControlContainerClick}\n >\n {rowHasDropdownSlot && <slot name={dropdownCellName}></slot>}\n </td>\n )}\n </tr>\n {rowHasExpandableSlot && (\n <tr\n id={expandableRowName}\n class=\"expandable-row\"\n hidden={!row.expanded}\n aria-hidden={!row.expanded}\n >\n <td\n colSpan={numberOfColumns}\n headers=\"toggle\"\n >\n <div class=\"expandable-content\">\n <slot name={expandableRowName}></slot>\n </div>\n </td>\n </tr>\n )}\n </Fragment>\n );\n })}\n </tbody>\n );\n }\n\n renderCellContent(cell: Q2DataTableCell) {\n if (!cell) return;\n\n const { type, ariaLabel, value } = cell;\n\n if ([undefined, null].includes(value)) return;\n\n switch (type) {\n case 'badge':\n let valueAsInt;\n switch (typeof value) {\n case 'string':\n valueAsInt = parseFloat(value);\n break;\n\n case 'boolean':\n valueAsInt = value ? 1 : 0;\n break;\n\n default:\n valueAsInt = value;\n break;\n }\n\n return (\n <q2-badge\n aria-label={ariaLabel}\n value={valueAsInt}\n theme={cell.badgeTheme}\n status={cell.badgeStatus}\n size=\"large\"\n ></q2-badge>\n );\n\n case 'icon':\n const valueAsString = typeof value === 'string' ? value : `${value}`;\n return (\n <q2-icon\n label={ariaLabel}\n type={valueAsString}\n ></q2-icon>\n );\n\n case 'boolean':\n return !!value ? (\n <q2-icon\n label={loc('tecton.element.dataTable.booleanTrue')}\n type=\"checkmark\"\n ></q2-icon>\n ) : (\n <div aria-label={loc('tecton.element.dataTable.booleanFalse')}></div>\n );\n\n case 'code':\n return <code aria-label={ariaLabel}>{value}</code>;\n\n default:\n return <div aria-label={ariaLabel}>{value}</div>;\n }\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"q2-data-table.js","mappings":"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","names":["Q2DataTable"],"sources":["./src/components/q2-data-table/styles.scss?tag=q2-data-table&encapsulation=shadow","./src/components/q2-data-table/index.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n\n:host {\n display: block;\n}\n\n.container {\n --comp-cell-padding: #{var-list(--tct-data-table-cell-padding, --tct-table-cell-padding, --app-scale-3x, 15px)};\n --comp-select-column-width: #{var-list(--tct-data-table-select-column-width, --tct-table-select-column-width, --tct-checkbox-size, 20px)};\n --comp-dropdown-column-width: #{var-list(--tct-data-table-dropdown-column-width, --tct-table-dropdown-column-width, --tct-btn-icon-width, 44px)};\n --comp-expandable-row-control-column-width: #{var-list(\n --tct-data-table-expandable-row-control-column-width,\n --tct-table-expandable-row-control-column-width,\n --tct-btn-icon-width,\n 44px\n )};\n\n overflow: auto;\n @include tiny-scrollbar();\n\n :host([shadowed]:not([shadowed='false'])) & {\n box-shadow: var-list(--tct-data-table-shadow, --tct-table-shadow, --app-shadow-1, unquote('0 2px 4px rgba(0, 0, 0, 0.3)'));\n }\n\n :host([density='compact']) & {\n --comp-cell-padding: #{var-list(--tct-data-table-cell-padding-compact, --tct-table-cell-padding-compact, --app-scale-1x, 5px)};\n }\n\n :host([density='comfortable']) & {\n --comp-cell-padding: #{var-list(--tct-data-table-cell-padding-comfortable, --tct-table-cell-padding-comfortable, --app-scale-5x, 25px)};\n }\n}\n\ntable {\n table-layout: var-list(--tct-data-table-layout, --tct-table-layout, auto);\n border-collapse: collapse;\n border-spacing: 0;\n width: var-list(--tct-data-table-width, --tct-table-width);\n min-width: 100%;\n background: var-list(--tct-data-table-background, --tct-table-background, --t-base, #ffffff);\n caption-side: var-list(--tct-data-table-caption-side, --tct-table-caption-side, bottom);\n}\n\nthead {\n border-width: var-list(--tct-data-table-header-border-width, --tct-table-header-border-width, unquote('0 0 2px 0'));\n border-style: var-list(--tct-data-table-header-border-style, --tct-table-header-border-style, solid);\n border-color: var-list(--tct-data-table-header-border-color, --tct-table-header-border-color, --t-gray-9, #999999);\n background: var-list(--tct-data-table-header-background, --tct-table-header-background);\n}\n\ncol {\n &.select-column {\n width: var(--comp-select-column-width);\n }\n\n &.expandable-row-control-column {\n width: var(--comp-expandable-row-control-column-width);\n }\n\n &.dropdown-column {\n width: var(--comp-dropdown-column-width);\n }\n}\n\ntd,\nth {\n padding: var(--comp-cell-padding);\n text-align: start;\n\n &.align-end {\n text-align: end;\n }\n &.align-center {\n text-align: center;\n }\n}\n\nth {\n .header-content {\n font-weight: var-list(--tct-data-table-header-font-weight, --tct-table-header-font-weight, 400);\n font-size: var-list(--tct-data-table-header-font-size, --app-font-size, 14px);\n }\n\n &.sorted {\n .header-content {\n font-weight: var-list(--tct-data-table-header-sorted-font-weight, --tct-table-header-sorted-font-weight, 600);\n }\n }\n\n .sorted-indicator {\n --comp-header-sortable-icon-size: #{var-list(--tct-data-table-header-sortable-icon-size, --tct-table-header-sortable-icon-size, --app-scale-3x, 15px)};\n --tct-icon-stroke-width: 2;\n\n width: var(--comp-header-sortable-icon-size);\n height: var(--comp-header-sortable-icon-size);\n\n &.direction-ASC {\n transform: rotate(180deg);\n }\n }\n\n q2-btn {\n .header-content {\n display: flex;\n align-items: center;\n gap: var-list(--tct-data-table-header-content-gap, --tct-table-header-content-gap, --app-scale-2x, 10px);\n }\n }\n}\n\ntr {\n &.expandable,\n &.clickable {\n cursor: pointer;\n\n &:focus {\n outline: none;\n box-shadow: none;\n }\n }\n\n &.expandable {\n &:hover {\n background: var-list(--tct-data-table-expandable-row-hover-background, --tct-table-expandable-row-hover-background, --t-gray-14, #f2f2f2);\n }\n }\n\n &.clickable {\n &:hover {\n background: var-list(--tct-data-table-clickable-row-hover-background, --tct-table-clickable-row-hover-background, --t-gray-14, #f2f2f2);\n }\n }\n\n &.selected {\n background: var-list(--tct-data-table-selected-row-background, --tct-table-selected-row-background, --t-gray-14, #f2f2f2);\n }\n\n &.expanded {\n background: var-list(--tct-data-table-expanded-row-background, --tct-table-expanded-row-background, --t-gray-14, #f2f2f2);\n\n .toggle-expandable-row {\n transform: rotate(180deg);\n }\n }\n\n :host([bordered]:not([bordered='false'])) tbody & {\n border-width: var-list(--tct-data-table-row-border-width, --tct-table-row-border-width, unquote('0 0 1px 0'));\n border-style: var-list(--tct-data-table-row-border-style, --tct-table-row-border-style, solid);\n border-color: var-list(--tct-data-table-row-border-color, --tct-table-row-border-color, --t-gray-9, #999999);\n }\n\n &.loading-row {\n background: var-list(--tct-data-table-loading-row-background, --tct-table-loading-row-background, --t-base, #ffffff);\n td {\n text-align: center;\n }\n\n q2-loading {\n font-size: 4em;\n }\n }\n\n &.expandable-row {\n background: var-list(--tct-data-table-expanded-row-background, --tct-table-expanded-row-background, --t-gray-14, #f2f2f2);\n }\n}\n\ntd {\n &.clamped {\n div {\n text-overflow: ellipsis;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: var(--comp-line-clamp-count, 1);\n -webkit-box-orient: vertical;\n }\n }\n\n &.expandable-row-control-column {\n --tct-btn-icon-hover-bg: transparent;\n padding: var-list(--tct-data-table-expandable-row-control-column-padding, --tct-table-expandable-row-control-column-padding, unquote('0 var(--app-scale-1x, 5px)'));\n text-align: center;\n }\n\n &.dropdown-column {\n padding: var-list(--tct-data-table-dropdown-column-padding, --tct-table-dropdown-column-padding, unquote('0 var(--app-scale-1x, 5px)'));\n text-align: center;\n }\n\n &.click-column:not(.sr) {\n padding: var-list(--tct-data-table-clickable-column-padding, --tct-table-clickable-column-padding, unquote('0 var(--app-scale-1x, 5px)'));\n text-align: center;\n }\n}\n\ncaption {\n padding: var-list(--tct-data-table-caption-padding, --tct-table-caption-padding, --app-scale-2x, 10px);\n font-size: var-list(--tct-data-table-caption-font-size, --tct-table-caption-font-size, inherit);\n font-weight: var-list(--tct-data-table-caption-font-weight, --tct-table-caption-font-weight, 600);\n text-align: var-list(--tct-data-table-caption-text-align, --tct-table-caption-text-align, center);\n color: var-list(--tct-data-table-caption-color, --tct-table-caption-color, inherit);\n}\n\nq2-checkbox {\n padding: 0;\n}\n","import {\n Component,\n State,\n Prop,\n h,\n ComponentInterface,\n Watch,\n Event,\n Element,\n EventEmitter,\n Fragment,\n Listen,\n} from '@stencil/core';\nimport { loc, resizeIframe } from '../../utils';\n\nexport type Q2DataTableCellAlignOptions = 'start' | 'center' | 'end';\nexport type Q2DataTableCellType =\n | {\n type?: 'text' | 'number' | 'icon' | 'boolean' | 'code';\n }\n | {\n type?: 'badge';\n badgeStatus?: HTMLQ2BadgeElement['status'];\n badgeTheme?: HTMLQ2BadgeElement['theme'];\n };\n\nexport type Q2DataTableHeader = {\n title: string;\n align?: Q2DataTableCellAlignOptions;\n key?: string;\n sortable?: boolean;\n width?: string;\n backgroundColor?: string;\n sorted?: 'ASC' | 'DESC';\n ariaLabel?: string;\n lineClamp?: number;\n} & Partial<Q2DataTableCellType>;\n\nexport type Q2DataTableCell = {\n value: string | number | boolean;\n align?: Q2DataTableCellAlignOptions;\n ariaLabel?: string;\n lineClamp?: number;\n} & Q2DataTableCellType;\n\nexport type Q2DataTableBaseRow = {\n id: string | number;\n selected?: boolean;\n expanded?: boolean;\n};\n\nexport type Q2DataTableCells = Record<string, string | number | Q2DataTableCell>;\nexport type Q2DataTableSerializedCells = Record<string, Q2DataTableCell>;\n\nexport type Q2DataTableRow = Q2DataTableBaseRow & {\n cells: Q2DataTableCells;\n};\nexport type Q2DataTableSerializedRow = Q2DataTableBaseRow & {\n cells: Q2DataTableSerializedCells;\n};\n\n@Component({\n tag: 'q2-data-table',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2DataTable implements ComponentInterface {\n @Prop({ mutable: true, reflect: true }) density: 'compact' | 'normal' | 'comfortable';\n @Prop({ mutable: true, reflect: true }) bordered: boolean;\n @Prop({ mutable: true, reflect: true }) shadowed: boolean;\n @Prop({ mutable: true, reflect: true }) selectable: boolean;\n @Prop({ mutable: true, reflect: true }) clickable: boolean;\n @Prop({ mutable: true, reflect: true }) loading: boolean;\n @Prop({ mutable: true, reflect: true }) hideCaption: boolean;\n @Prop({ mutable: true }) caption: string;\n @Prop({ mutable: true }) selectMode: 'multiple' | 'single' = 'multiple';\n @Prop({ mutable: true }) hideClickable: boolean;\n\n @Prop({ mutable: true }) headers: Q2DataTableHeader[];\n @Prop({ mutable: true }) rows: Q2DataTableRow[];\n\n @Element() hostElement: HTMLElement;\n\n @State() serializedHeaders: Q2DataTableHeader[] = [];\n @State() serializedRows: Q2DataTableSerializedRow[] = [];\n @State() hasExpandableRows: boolean = false;\n @State() hasDropdowns: boolean = false;\n @State() allRowsSelected: boolean = false;\n @State() checkSlotCount: number = 0;\n\n @Event() select: EventEmitter<{\n row: Q2DataTableSerializedRow;\n rows: Q2DataTableSerializedRow[];\n allSelected: boolean;\n }>;\n @Event() click: EventEmitter<{ row: Q2DataTableSerializedRow }>;\n @Event() toggle: EventEmitter<{ row: Q2DataTableSerializedRow }>;\n @Event() sort: EventEmitter<{ header: Q2DataTableHeader; direction: 'ASC' | 'DESC' }>;\n\n mutationObserver: MutationObserver;\n resizeObserver: ResizeObserver;\n\n /// LifeCycle Hooks ///\n componentWillLoad() {\n this.headersHandler(this.headers);\n this.rowsHandler(this.rows);\n }\n\n componentDidLoad(): void {\n if (typeof MutationObserver !== 'undefined') {\n const observer = new MutationObserver(() => this.checkSlots());\n observer.observe(this.hostElement, { childList: true, subtree: true, attributes: true });\n this.mutationObserver = observer;\n }\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => resizeIframe());\n this.resizeObserver.observe(this.hostElement);\n }\n }\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n\n /// Getters ///\n get selectedRows() {\n return this.serializedRows.filter(({ selected }) => selected);\n }\n\n get selectedRow() {\n return this.selectedRows.find(({ selected }) => !!selected);\n }\n\n get numberOfColumns() {\n return (\n (this.serializedHeaders?.length ?? 0) +\n (this.selectable ? 1 : 0) +\n (this.clickable ? 1 : 0) +\n (this.hasExpandableRows ? 1 : 0) +\n (this.hasDropdowns ? 1 : 0)\n );\n }\n\n get mappedHeaders() {\n return this.serializedHeaders.reduce<Record<string, Q2DataTableHeader>>((accum, header) => {\n accum[header.key] = header;\n return accum;\n }, {});\n }\n\n /// Helpers ///\n sortRows(rows: Q2DataTableSerializedRow[], header: Q2DataTableHeader) {\n const { key, sorted } = header;\n const direction = sorted || 'ASC';\n\n const sortedRows = [...rows].sort((a, b) => {\n const aValue = a.cells[key].value;\n const bValue = b.cells[key].value;\n\n if (aValue < bValue) return direction === 'ASC' ? -1 : 1;\n if (aValue > bValue) return direction === 'ASC' ? 1 : -1;\n return 0;\n });\n\n return sortedRows;\n }\n\n checkSlots = () => {\n this.hasExpandableRows = !!(this.hostElement?.querySelector(`[slot$=\"-expandable-content\"]`) ?? false);\n this.hasDropdowns = !!(this.hostElement?.querySelector(`[slot$=\"-dropdown\"]`) ?? false);\n\n // The booleans above may not change, event if the slot content\n // So we increment this property to force a re-render and ensure proper rendering\n this.checkSlotCount += 1;\n };\n\n /// Watchers ///\n @Watch('headers')\n headersHandler(headers: Q2DataTableHeader[] = []) {\n this.serializedHeaders = headers.map<Q2DataTableHeader>(header => {\n const { title } = header;\n let { key } = header;\n\n // If no key is provided, generate one from the title\n if (!key) key = title.toLowerCase().replace(/\\s/g, '-');\n\n return {\n key,\n ...header,\n };\n });\n }\n\n @Watch('rows')\n rowsHandler(rows: Q2DataTableRow[] = []) {\n const { serializedHeaders, mappedHeaders } = this;\n const defaultRow = {\n id: null,\n cells: {},\n selected: false,\n expanded: false,\n };\n\n const serializedRows = rows.map(({ id, cells, selected, expanded }) => {\n const serializedCells = Object.entries(cells).reduce<Q2DataTableSerializedCells>(\n (accum, [cellKey, cellData]) => {\n const header = mappedHeaders[cellKey] || ({} as Q2DataTableHeader);\n const { align, type = 'text', lineClamp } = header;\n\n const isBadge = 'type' in header && header.type === 'badge';\n const defaultCell: Q2DataTableCell = {\n value: '',\n ariaLabel: undefined,\n type,\n align,\n lineClamp,\n badgeStatus: isBadge ? header.badgeStatus : undefined,\n badgeTheme: isBadge ? header.badgeTheme : undefined,\n };\n\n const result: Q2DataTableCell =\n typeof cellData === 'object'\n ? { ...defaultCell, ...cellData }\n : { ...defaultCell, value: cellData };\n\n accum[cellKey] = result;\n return accum;\n },\n {}\n );\n return { ...defaultRow, id, selected: !!selected, expanded: !!expanded, cells: serializedCells };\n });\n\n const sortedHeader = serializedHeaders.find(({ sorted }) => sorted);\n\n this.serializedRows = !!sortedHeader ? this.sortRows(serializedRows, sortedHeader) : serializedRows;\n this.checkSlots();\n }\n\n /// Listeners ///\n @Listen('click')\n onClickListener(event: MouseEvent) {\n if (event instanceof PointerEvent) event.stopImmediatePropagation();\n }\n\n /// Event Handlers ///\n onSort = (header: Q2DataTableHeader) => {\n const direction = header.sorted === 'ASC' ? 'DESC' : 'ASC';\n const sortKey = header.key;\n const sortEvent = this.sort.emit({ header, direction });\n if (sortEvent.defaultPrevented) return;\n\n this.serializedHeaders = this.serializedHeaders.map<Q2DataTableHeader>(serializedHeader => {\n const sorted = sortKey === serializedHeader.key ? direction : undefined;\n return { ...serializedHeader, sorted };\n });\n this.serializedRows = this.sortRows(this.serializedRows, { ...header, sorted: direction });\n };\n\n onSelectAllRows = (event: CustomEvent<{ checked: boolean }>) => {\n event.stopPropagation();\n const { checked } = event.detail;\n const selectedRows = checked\n ? this.serializedRows.map(row => ({\n ...row,\n selected: checked,\n }))\n : [];\n const selectEvent = this.select.emit({ row: undefined, rows: selectedRows, allSelected: checked });\n if (selectEvent.defaultPrevented) return;\n\n this.serializedRows = this.serializedRows.map(row => {\n row.selected = checked;\n return row;\n });\n this.allRowsSelected = checked;\n };\n\n onSelectRow = (event: CustomEvent<{ checked: boolean }>, row: Q2DataTableSerializedRow) => {\n event.stopPropagation();\n const { selectMode, serializedRows, selectedRows: currentlySelectedRows } = this;\n const { checked } = event.detail;\n\n const selectedRow = { ...row, selected: checked };\n let selectedRows;\n if (selectMode === 'single') {\n selectedRows = checked ? [selectedRow] : [];\n } else {\n selectedRows = checked\n ? [...currentlySelectedRows, selectedRow]\n : currentlySelectedRows.filter(row => row.id !== selectedRow.id);\n }\n\n const allRowsSelected = selectedRows.length === serializedRows.length;\n const selectEvent = this.select.emit({ row: selectedRow, rows: selectedRows, allSelected: allRowsSelected });\n if (selectEvent.defaultPrevented) return;\n\n this.serializedRows = this.serializedRows.map(row => (row.id === selectedRow.id ? selectedRow : row));\n this.allRowsSelected = allRowsSelected;\n };\n\n onClickTableRow = (event: MouseEvent, row: Q2DataTableSerializedRow) => {\n if (this.clickable) {\n this.onClickRow(event, row);\n } else if (this.hasExpandableRows) {\n this.onToggleRow(event, row);\n }\n };\n\n onClickRow = (event: MouseEvent, row: Q2DataTableSerializedRow) => {\n event.stopPropagation();\n this.click.emit({ row });\n };\n\n onToggleRow = (event: MouseEvent, row: Q2DataTableSerializedRow) => {\n event.stopPropagation();\n const selectedRow = { ...row, expanded: !row.expanded };\n const toggleEvent = this.toggle.emit({ row: selectedRow });\n if (toggleEvent.defaultPrevented) return;\n\n this.serializedRows = this.serializedRows.map(row => {\n if (row.id === selectedRow.id) return selectedRow;\n else return { ...row };\n });\n };\n\n onControlContainerClick = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n /// DOM ///\n\n render() {\n const { caption } = this;\n return (\n <div class=\"container\">\n <table>\n {caption && <caption class={this.hideCaption ? 'sr' : undefined}>{caption}</caption>}\n {this.renderTableColGroup()}\n {this.renderTableHeader()}\n {this.renderTableRows()}\n </table>\n </div>\n );\n }\n\n renderTableColGroup() {\n const { serializedHeaders: headers, selectable, clickable, hasExpandableRows, hasDropdowns } = this;\n\n if (!headers.length) return null;\n\n return (\n <colgroup>\n {selectable && <col class=\"select-column\" />}\n {headers.map(({ width, backgroundColor }) => (\n <col style={{ width, backgroundColor }} />\n ))}\n {clickable && <col class=\"click-column\" />}\n {hasExpandableRows && <col class=\"expandable-row-control-column\" />}\n {hasDropdowns && <col class=\"dropdown-column\" />}\n </colgroup>\n );\n }\n\n renderTableHeader() {\n const {\n serializedHeaders: headers,\n selectable,\n clickable,\n hideClickable,\n selectMode,\n hasExpandableRows,\n hasDropdowns,\n } = this;\n\n if (!headers.length) return null;\n\n return (\n <thead>\n <tr>\n {selectable && (\n <th>\n {selectMode === 'multiple' && (\n <q2-checkbox\n label={loc('tecton.element.dataTable.selectAllRows')}\n hide-label\n onChange={this.onSelectAllRows}\n checked={this.allRowsSelected}\n disabled={this.loading}\n test-id=\"select-all-rows-control\"\n ></q2-checkbox>\n )}\n </th>\n )}\n {headers.map(header => {\n const { align, sorted } = header;\n const headerClasses = [];\n if (align) headerClasses.push(`align-${align}`);\n if (!!sorted) headerClasses.push('sorted');\n return (\n <th\n class={headerClasses.join(' ')}\n id={`header-${header.key}`}\n >\n {header.sortable ? (\n <q2-btn\n onClick={() => this.onSort(header)}\n test-id=\"sort-control\"\n disabled={this.loading}\n >\n <div\n class=\"header-content\"\n aria-label={header.ariaLabel || undefined}\n >\n {header.title}\n\n {!!sorted ? (\n <q2-icon\n class={`sorted-indicator direction-${sorted}`}\n type=\"arrow-down\"\n label={\n sorted === 'ASC'\n ? loc('tecton.element.dataTable.sortedAscending')\n : loc('tecton.element.dataTable.sortedDescending')\n }\n test-id=\"sorted-indicator\"\n ></q2-icon>\n ) : (\n <q2-icon\n class={`sorted-indicator`}\n type=\"sort\"\n label={loc('tecton.element.dataTable.clickToSort')}\n test-id=\"sorted-indicator\"\n ></q2-icon>\n )}\n </div>\n </q2-btn>\n ) : (\n <div\n class=\"header-content\"\n aria-label={header.ariaLabel || undefined}\n >\n {header.title}\n </div>\n )}\n </th>\n );\n })}\n {clickable && (\n <th\n id=\"click\"\n class={hideClickable ? 'sr' : undefined}\n >\n <span class=\"sr\">{loc('tecton.element.dataTable.clickRow')}</span>\n </th>\n )}\n {hasExpandableRows && (\n <th id=\"toggle\">\n <span class=\"sr\">{loc('tecton.element.dataTable.toggleRow')}</span>\n </th>\n )}\n {hasDropdowns && (\n <th>\n <span class=\"sr\">{loc('tecton.element.dataTable.dropdown')}</span>\n </th>\n )}\n </tr>\n </thead>\n );\n }\n\n renderTableRows() {\n const {\n serializedHeaders: headers,\n serializedRows: rows,\n selectable,\n clickable,\n hideClickable,\n selectMode,\n hasExpandableRows,\n hasDropdowns,\n numberOfColumns,\n loading,\n } = this;\n\n if (loading) {\n return (\n <tbody>\n <tr class=\"loading-row\">\n <td colSpan={numberOfColumns}>\n <q2-loading inline></q2-loading>\n </td>\n </tr>\n </tbody>\n );\n }\n\n if (!rows.length) return;\n\n let isSelectDisabled = false;\n let selectedRow;\n if (selectMode === 'single') {\n selectedRow = this.selectedRow;\n isSelectDisabled = !!selectedRow;\n }\n const clickableClasses = [];\n if (clickable) clickableClasses.push('click-column');\n if (hideClickable) clickableClasses.push('sr');\n const clickableClassString = clickableClasses.join(' ');\n\n return (\n <tbody>\n {rows.map(row => {\n const cellSlotPrefix = `row-${row.id}-cell`;\n const expandableRowName = `row-${row.id}-expandable-content`;\n const dropdownCellName = `row-${row.id}-dropdown`;\n const rowHasExpandableSlot =\n hasExpandableRows && !!this.hostElement.querySelector(`[slot=\"${expandableRowName}\"]`);\n const rowHasDropdownSlot =\n hasDropdowns && !!this.hostElement.querySelector(`[slot=\"${dropdownCellName}\"]`);\n const rowClasses = [];\n if (rowHasExpandableSlot) rowClasses.push('expandable');\n if (clickable) rowClasses.push('clickable');\n if (row.expanded) rowClasses.push('expanded');\n if (row.selected) rowClasses.push('selected');\n const rowIsClickable = clickable || rowHasExpandableSlot;\n\n return (\n <Fragment>\n <tr\n id={`row-${row.id}`}\n class={rowClasses.join(' ')}\n onClick={rowIsClickable && (e => this.onClickTableRow(e, row))}\n tabIndex={rowIsClickable ? -1 : undefined}\n >\n {selectable && (\n <td\n class=\"select-column\"\n onClick={this.onControlContainerClick}\n >\n <q2-checkbox\n label={loc('tecton.element.dataTable.selectRow')}\n hide-label\n checked={row.selected}\n disabled={isSelectDisabled && row !== selectedRow}\n onChange={e => this.onSelectRow(e, row)}\n test-id=\"select-row-control\"\n ></q2-checkbox>\n </td>\n )}\n {headers.map(({ key }) => {\n const cell = row.cells[key];\n const lineClamp = cell?.lineClamp;\n const cellAlign = cell?.align;\n const cellClasses = [];\n if (cellAlign) cellClasses.push(`align-${cellAlign}`);\n if (lineClamp) cellClasses.push('clamped');\n const cellStyles = lineClamp\n ? { '--comp-line-clamp-count': `${lineClamp}` }\n : undefined;\n\n return (\n <td\n class={cellClasses.join(' ')}\n style={cellStyles}\n >\n <slot name={`${cellSlotPrefix}-${key}`}>\n {this.renderCellContent(cell)}\n </slot>\n </td>\n );\n })}\n {clickable && (\n <td class={clickableClassString}>\n <q2-btn\n intent=\"neutral\"\n size=\"small\"\n onClick={e => this.onClickRow(e, row)}\n test-id=\"clickable-row-control\"\n >\n {loc('tecton.element.dataTable.clickRow')}\n </q2-btn>\n </td>\n )}\n {hasExpandableRows && (\n <td\n class=\"expandable-row-control-column\"\n onClick={this.onControlContainerClick}\n >\n {rowHasExpandableSlot && (\n <q2-btn\n onClick={e => this.onToggleRow(e, row)}\n ariaExpanded={`${row.expanded}`}\n ariaControls={expandableRowName}\n ariaLabel={loc('tecton.element.dataTable.toggleRow')}\n test-id=\"expandable-row-control\"\n >\n <q2-icon\n type=\"chevron-down\"\n class=\"toggle-expandable-row\"\n ></q2-icon>\n </q2-btn>\n )}\n </td>\n )}\n {hasDropdowns && (\n <td\n class=\"dropdown-column\"\n onClick={this.onControlContainerClick}\n >\n {rowHasDropdownSlot && <slot name={dropdownCellName}></slot>}\n </td>\n )}\n </tr>\n {rowHasExpandableSlot && (\n <tr\n id={expandableRowName}\n class=\"expandable-row\"\n hidden={!row.expanded}\n aria-hidden={!row.expanded}\n >\n <td\n colSpan={numberOfColumns}\n headers=\"toggle\"\n >\n <div class=\"expandable-content\">\n <slot name={expandableRowName}></slot>\n </div>\n </td>\n </tr>\n )}\n </Fragment>\n );\n })}\n </tbody>\n );\n }\n\n renderCellContent(cell: Q2DataTableCell) {\n if (!cell) return;\n\n const { type, ariaLabel, value } = cell;\n\n if ([undefined, null].includes(value)) return;\n\n switch (type) {\n case 'badge':\n let valueAsInt;\n switch (typeof value) {\n case 'string':\n valueAsInt = parseFloat(value);\n break;\n\n case 'boolean':\n valueAsInt = value ? 1 : 0;\n break;\n\n default:\n valueAsInt = value;\n break;\n }\n\n return (\n <q2-badge\n aria-label={ariaLabel}\n value={valueAsInt}\n theme={cell.badgeTheme}\n status={cell.badgeStatus}\n size=\"large\"\n ></q2-badge>\n );\n\n case 'icon':\n const valueAsString = typeof value === 'string' ? value : `${value}`;\n return (\n <q2-icon\n label={ariaLabel}\n type={valueAsString}\n ></q2-icon>\n );\n\n case 'boolean':\n return !!value ? (\n <q2-icon\n label={loc('tecton.element.dataTable.booleanTrue')}\n type=\"checkmark\"\n ></q2-icon>\n ) : (\n <div aria-label={loc('tecton.element.dataTable.booleanFalse')}></div>\n );\n\n case 'code':\n return <code aria-label={ariaLabel}>{value}</code>;\n\n default:\n return <div aria-label={ariaLabel}>{value}</div>;\n }\n }\n}\n"],"version":3}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
|
|
2
|
-
import { l as loc, h as handleAriaLabel, o as overrideFocus, i as isEventFromElement } from './index16.js';
|
|
2
|
+
import { l as loc, h as handleAriaLabel, o as overrideFocus, i as isEventFromElement, w as waitForNextPaint } from './index16.js';
|
|
3
3
|
import { d as defineCustomElement$6 } from './index4.js';
|
|
4
4
|
import { d as defineCustomElement$5 } from './index5.js';
|
|
5
5
|
import { d as defineCustomElement$4 } from './index8.js';
|
|
@@ -94,7 +94,7 @@ const Q2EditableField$1 = /*@__PURE__*/ proxyCustomElement(class Q2EditableField
|
|
|
94
94
|
componentDidRender() {
|
|
95
95
|
this.scheduledAfterRender.forEach(fn => fn());
|
|
96
96
|
this.scheduledAfterRender = [];
|
|
97
|
-
this.formattedValue = this.
|
|
97
|
+
this.formattedValue = this.inputElement.formattedValue;
|
|
98
98
|
}
|
|
99
99
|
componentDidLoad() {
|
|
100
100
|
overrideFocus(this.hostElement);
|
|
@@ -108,7 +108,7 @@ const Q2EditableField$1 = /*@__PURE__*/ proxyCustomElement(class Q2EditableField
|
|
|
108
108
|
const hasErrors = errors.length;
|
|
109
109
|
if (isInputFocused || !focusedElement || !editing || !hasErrors)
|
|
110
110
|
return;
|
|
111
|
-
this.
|
|
111
|
+
this.inputElement.focus();
|
|
112
112
|
}
|
|
113
113
|
ariaLabelObserver() {
|
|
114
114
|
handleAriaLabel(this);
|
|
@@ -130,7 +130,7 @@ const Q2EditableField$1 = /*@__PURE__*/ proxyCustomElement(class Q2EditableField
|
|
|
130
130
|
this.value = event.detail.value;
|
|
131
131
|
break;
|
|
132
132
|
case 'cancel':
|
|
133
|
-
this.
|
|
133
|
+
this.inputElement.value = this.value;
|
|
134
134
|
break;
|
|
135
135
|
}
|
|
136
136
|
this.editing = event.detail.editing;
|
|
@@ -140,11 +140,39 @@ const Q2EditableField$1 = /*@__PURE__*/ proxyCustomElement(class Q2EditableField
|
|
|
140
140
|
return;
|
|
141
141
|
this.hostElement.shadowRoot.querySelector(this.editing ? 'q2-input' : 'q2-btn.begin-edit').focus();
|
|
142
142
|
}
|
|
143
|
+
/// Methods ///
|
|
144
|
+
clickEdit() {
|
|
145
|
+
var _a;
|
|
146
|
+
if (this.editing)
|
|
147
|
+
return;
|
|
148
|
+
(_a = this.editBtnElement) === null || _a === void 0 ? void 0 : _a.click();
|
|
149
|
+
}
|
|
150
|
+
clickCancel() {
|
|
151
|
+
var _a;
|
|
152
|
+
if (!this.editing)
|
|
153
|
+
return;
|
|
154
|
+
(_a = this.cancelBtnElement) === null || _a === void 0 ? void 0 : _a.click();
|
|
155
|
+
}
|
|
156
|
+
clickSave() {
|
|
157
|
+
var _a;
|
|
158
|
+
if (!this.editing)
|
|
159
|
+
return;
|
|
160
|
+
(_a = this.saveBtnElement) === null || _a === void 0 ? void 0 : _a.click();
|
|
161
|
+
}
|
|
162
|
+
async setValue(value, options = { clickSave: true }) {
|
|
163
|
+
await this.clickEdit();
|
|
164
|
+
await waitForNextPaint();
|
|
165
|
+
await this.inputElement.setValue(value);
|
|
166
|
+
if (options.clickSave) {
|
|
167
|
+
await this.clickSave();
|
|
168
|
+
await waitForNextPaint();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
143
171
|
render() {
|
|
144
172
|
return (h("div", null, this.generateEditStateDOM(), this.generateReadStateDOM()));
|
|
145
173
|
}
|
|
146
174
|
generateEditStateDOM() {
|
|
147
|
-
return (h("div", { class: this.wrapperClass, hidden: !this.editing }, h("q2-input", { ref: el => (this.
|
|
175
|
+
return (h("div", { class: this.wrapperClass, hidden: !this.editing }, h("q2-input", { ref: el => (this.inputElement = el), label: this.locLabel, hideLabel: this.hideLabel, value: this.value, hints: (Array.isArray(this.hints) && this.hints.map(str => loc(str))) || undefined, errors: (Array.isArray(this.errors) && this.errors.map(str => loc(str))) || undefined, type: this.type, disabled: this.disabled, formatModifier: this.formatModifier, maxlength: this.maxlength, "test-id": "editableInput", onInput: this.inputInput, onChange: this.inputChange, onKeyDown: this.inputKeyDown, onClick: this.inputClick }), h("q2-btn", { ref: el => (this.cancelBtnElement = el), class: "cancel-edit", label: `${loc('tecton.element.editableField.cancel')} ${this.locLabel}`, "hide-label": true, "test-id": "cancelButton", onClick: this.cancelClick }, h("q2-icon", { type: "close" })), h("q2-btn", { ref: el => (this.saveBtnElement = el), class: "save-edit", label: `${loc('tecton.element.editableField.save')} ${this.locLabel}`, "hide-label": true, "test-id": "saveButton", onClick: this.saveClick }, h("q2-icon", { type: "checkmark" }))));
|
|
148
176
|
}
|
|
149
177
|
generateReadStateDOM() {
|
|
150
178
|
if (this.persistentLabel && this.locLabel) {
|
|
@@ -153,7 +181,7 @@ const Q2EditableField$1 = /*@__PURE__*/ proxyCustomElement(class Q2EditableField
|
|
|
153
181
|
return (h("div", { class: this.wrapperClass, hidden: this.editing }, h("div", { class: "text-wrapper" }, this.formattedValue || this.value), this.generateEditBtn()));
|
|
154
182
|
}
|
|
155
183
|
generateEditBtn() {
|
|
156
|
-
return (h("q2-btn", { ref: el => (this.
|
|
184
|
+
return (h("q2-btn", { ref: el => (this.editBtnElement = el), class: "begin-edit", label: `${loc('tecton.element.editableField.edit')} ${this.locLabel}`, "hide-label": true, disabled: this.disabled, "test-id": "editButton", onClick: this.editClick }, h("q2-icon", { type: "edit" })));
|
|
157
185
|
}
|
|
158
186
|
get hostElement() { return this; }
|
|
159
187
|
static get watchers() { return {
|
|
@@ -177,7 +205,11 @@ const Q2EditableField$1 = /*@__PURE__*/ proxyCustomElement(class Q2EditableField
|
|
|
177
205
|
"hints": [16],
|
|
178
206
|
"errors": [16],
|
|
179
207
|
"ariaLabel": [1537, "aria-label"],
|
|
180
|
-
"formattedValue": [32]
|
|
208
|
+
"formattedValue": [32],
|
|
209
|
+
"clickEdit": [64],
|
|
210
|
+
"clickCancel": [64],
|
|
211
|
+
"clickSave": [64],
|
|
212
|
+
"setValue": [64]
|
|
181
213
|
}, [[0, "change", "onHostElementChange"], [0, "focus", "delegateFocus"]]]);
|
|
182
214
|
function defineCustomElement$1() {
|
|
183
215
|
if (typeof customElements === "undefined") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"q2-editable-field.js","mappings":"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","names":["Q2EditableField"],"sources":["./src/components/q2-editable-field/styles.scss?tag=q2-editable-field&encapsulation=shadow","./src/components/q2-editable-field/index.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n\n:host {\n display: inline-block;\n max-width: 100%;\n}\n\n.q2-editable-field-wrapper:not([hidden]) {\n display: flex;\n}\n\n.q2-editable-field-wrapper.editing {\n align-items: flex-end;\n}\n\n:host([block]) {\n display:block;\n width: 100%;\n .q2-editable-field-wrapper:not([hidden]) {\n display: grid;\n grid-template-columns: 1fr auto auto;\n }\n}\n\nq2-input,\n.text-wrapper {\n margin: 0 var(--tct-scale-2, var(--app-scale-2x, 10px)) 0 0;\n}\n\nq2-input {\n flex: 1 1 auto;\n min-width: 170px;\n}\n\n.text-wrapper {\n flex: 0 auto;\n align-self: center;\n display: inline-block;\n}\n\n:host([truncated]) .text-wrapper {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\nq2-btn {\n flex: 0 0 44px;\n}\n\ndl {\n margin: var(--tct-scale-0, var(--app-scale-0x, 0));\n}\n\ndt {\n font-weight: 600;\n}\n\ndd {\n margin-left: var(--tct-scale-0, var(--app-scale-0x, 0));\n display: flex;\n align-items: center;\n}\n","import { Component, State, Prop, h, Listen, Element, Event, EventEmitter, Watch } from '@stencil/core';\nimport { IEventDetail, Q2InputCustomEvent } from 'src/components';\nimport { handleAriaLabel, isEventFromElement, loc, overrideFocus } from 'src/utils';\nimport { Q2Input } from '../q2-input';\nimport { IFormatterValueObject } from '../q2-input/types';\n\ninterface IExtendedQ2InputElement extends HTMLQ2InputElement {\n formattedValue: IFormatterValueObject['formattedValue'];\n}\n\n@Component({\n tag: 'q2-editable-field',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2EditableField {\n @Prop({ reflect: true, mutable: true }) value: string = '';\n @Prop({ reflect: true, mutable: true }) editing: boolean = false;\n @Prop({ reflect: true, mutable: true }) label: string = '';\n @Prop({ reflect: true, mutable: true }) hideLabel: boolean;\n @Prop({ reflect: true }) type: Q2Input['type'];\n @Prop({ reflect: true }) formatModifier: string;\n @Prop({ reflect: true }) truncated: boolean;\n @Prop({ reflect: true }) maxlength: number;\n @Prop({ reflect: true }) persistentLabel: boolean;\n @Prop({ reflect: true }) disabled: boolean;\n @Prop({ reflect: true }) block: boolean;\n @Prop() hints: string[];\n @Prop() errors: string[];\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true }) ariaLabel: string;\n\n scheduledAfterRender: (() => void)[] = [];\n\n @Element() hostElement: HTMLElement;\n q2InputElement: HTMLQ2InputElement;\n q2EditBtnElement: HTMLQ2BtnElement;\n\n @State() formattedValue: string;\n innerValue: string;\n defaultValue: string = this.value;\n\n get locLabel() {\n return (this.label && loc(this.label)) || '';\n }\n\n /////// LIFECYCLE HOOKS ///////\n\n componentWillLoad() {\n handleAriaLabel(this);\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n this.formattedValue = (this.q2InputElement as IExtendedQ2InputElement).formattedValue;\n }\n\n componentDidLoad() {\n overrideFocus(this.hostElement);\n }\n\n //////// OBSERVERS ////////\n\n @Watch('errors')\n errorsObserver() {\n const { editing, errors = [] } = this;\n const focusedElement = this.hostElement.shadowRoot.activeElement;\n const isInputFocused = focusedElement?.tagName === 'Q2-INPUT' ?? false;\n const hasErrors = errors.length;\n if (isInputFocused || !focusedElement || !editing || !hasErrors) return;\n this.q2InputElement.focus();\n }\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('editing')\n observesEditing(newValue: boolean, oldValue: boolean) {\n if (newValue === oldValue) return;\n this.scheduledAfterRender.push(this.hostElement.focus);\n }\n\n get wrapperClass() {\n return `q2-editable-field-wrapper ${this.editing ? 'editing' : ''}`;\n }\n\n ///////// HOST ELEMENT EVENTS //////\n\n @Listen('change')\n onHostElementChange(event: CustomEvent) {\n if (!isEventFromElement(event, this.hostElement) || this.hostElement.onchange) return;\n switch (event.detail.name) {\n case 'save':\n this.value = event.detail.value;\n break;\n\n case 'cancel':\n this.q2InputElement.value = this.value;\n break;\n }\n\n this.editing = event.detail.editing;\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.hostElement.shadowRoot.querySelector<HTMLElement>(this.editing ? 'q2-input' : 'q2-btn.begin-edit').focus();\n }\n\n ///////// EVENTS /////////\n\n @Event() input: EventEmitter;\n @Event() change: EventEmitter;\n\n //////// ACTIONS /////////\n\n inputInput = (event: Q2InputCustomEvent<IEventDetail> & InputEvent) => {\n event.stopPropagation();\n this.input.emit(event.detail);\n this.formattedValue = event.detail.formattedValue;\n this.innerValue = event.detail.value;\n };\n\n inputChange = (e: CustomEvent) => {\n e.stopPropagation();\n };\n\n inputKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' || e.key === 'Esc') {\n e.preventDefault();\n this.cancelClick();\n return;\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n this.saveClick();\n return;\n }\n };\n\n inputClick = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n saveClick = (event?: MouseEvent) => {\n event && event.stopPropagation();\n const valueFromInputProp = this.hostElement.shadowRoot.querySelector('q2-input').value;\n this.defaultValue = valueFromInputProp;\n this.change.emit({\n editing: false,\n name: 'save',\n value: this.innerValue || valueFromInputProp,\n formattedValue: this.formattedValue || valueFromInputProp,\n });\n\n setTimeout(() => {\n const { errors = [] } = this;\n if (!errors.length) return;\n this.hostElement.focus();\n }, 1);\n };\n\n editClick = (event: MouseEvent) => {\n event?.stopPropagation();\n this.change.emit({ editing: true, name: 'edit' });\n };\n\n cancelClick = (event?: MouseEvent) => {\n event?.stopPropagation();\n this.change.emit({ editing: false, name: 'cancel' });\n this.hostElement.shadowRoot.querySelector('q2-input').value = this.defaultValue;\n };\n\n render() {\n return (\n <div>\n {this.generateEditStateDOM()}\n {this.generateReadStateDOM()}\n </div>\n );\n }\n\n generateEditStateDOM() {\n return (\n <div\n class={this.wrapperClass}\n hidden={!this.editing}\n >\n <q2-input\n ref={el => (this.q2InputElement = el)}\n label={this.locLabel}\n hideLabel={this.hideLabel}\n value={this.value}\n hints={(Array.isArray(this.hints) && this.hints.map(str => loc(str))) || undefined}\n errors={(Array.isArray(this.errors) && this.errors.map(str => loc(str))) || undefined}\n type={this.type}\n disabled={this.disabled}\n formatModifier={this.formatModifier}\n maxlength={this.maxlength}\n test-id=\"editableInput\"\n onInput={this.inputInput}\n onChange={this.inputChange}\n onKeyDown={this.inputKeyDown}\n onClick={this.inputClick}\n />\n <q2-btn\n class=\"cancel-edit\"\n label={`${loc('tecton.element.editableField.cancel')} ${this.locLabel}`}\n hide-label\n test-id=\"cancelButton\"\n onClick={this.cancelClick}\n >\n <q2-icon type=\"close\" />\n </q2-btn>\n <q2-btn\n class=\"save-edit\"\n label={`${loc('tecton.element.editableField.save')} ${this.locLabel}`}\n hide-label\n test-id=\"saveButton\"\n onClick={this.saveClick}\n >\n <q2-icon type=\"checkmark\" />\n </q2-btn>\n </div>\n );\n }\n\n generateReadStateDOM() {\n if (this.persistentLabel && this.locLabel) {\n return (\n <div\n class={this.wrapperClass}\n hidden={this.editing}\n >\n <dl>\n <dt class=\"read-state-label\">{this.locLabel}</dt>\n <dd>\n <span class=\"text-wrapper\">{this.formattedValue || this.value}</span>\n {this.generateEditBtn()}\n </dd>\n </dl>\n </div>\n );\n }\n return (\n <div\n class={this.wrapperClass}\n hidden={this.editing}\n >\n <div class=\"text-wrapper\">{this.formattedValue || this.value}</div>\n {this.generateEditBtn()}\n </div>\n );\n }\n\n generateEditBtn() {\n return (\n <q2-btn\n ref={el => (this.q2EditBtnElement = el)}\n class=\"begin-edit\"\n label={`${loc('tecton.element.editableField.edit')} ${this.locLabel}`}\n hide-label\n disabled={this.disabled}\n test-id=\"editButton\"\n onClick={this.editClick}\n >\n <q2-icon type=\"edit\" />\n </q2-btn>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"q2-editable-field.js","mappings":"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","names":["Q2EditableField"],"sources":["./src/components/q2-editable-field/styles.scss?tag=q2-editable-field&encapsulation=shadow","./src/components/q2-editable-field/index.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n\n:host {\n display: inline-block;\n max-width: 100%;\n}\n\n.q2-editable-field-wrapper:not([hidden]) {\n display: flex;\n}\n\n.q2-editable-field-wrapper.editing {\n align-items: flex-end;\n}\n\n:host([block]) {\n display:block;\n width: 100%;\n .q2-editable-field-wrapper:not([hidden]) {\n display: grid;\n grid-template-columns: 1fr auto auto;\n }\n}\n\nq2-input,\n.text-wrapper {\n margin: 0 var(--tct-scale-2, var(--app-scale-2x, 10px)) 0 0;\n}\n\nq2-input {\n flex: 1 1 auto;\n min-width: 170px;\n}\n\n.text-wrapper {\n flex: 0 auto;\n align-self: center;\n display: inline-block;\n}\n\n:host([truncated]) .text-wrapper {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\nq2-btn {\n flex: 0 0 44px;\n}\n\ndl {\n margin: var(--tct-scale-0, var(--app-scale-0x, 0));\n}\n\ndt {\n font-weight: 600;\n}\n\ndd {\n margin-left: var(--tct-scale-0, var(--app-scale-0x, 0));\n display: flex;\n align-items: center;\n}\n","import { Component, State, Prop, h, Listen, Element, Event, EventEmitter, Method, Watch } from '@stencil/core';\nimport { IEventDetail, Q2InputCustomEvent } from 'src/components';\nimport { handleAriaLabel, isEventFromElement, loc, overrideFocus, waitForNextPaint } from 'src/utils';\nimport { Q2Input } from '../q2-input';\nimport { IFormatterValueObject } from '../q2-input/types';\n\ninterface IExtendedQ2InputElement extends HTMLQ2InputElement {\n formattedValue: IFormatterValueObject['formattedValue'];\n}\n\n@Component({\n tag: 'q2-editable-field',\n shadow: true,\n styleUrl: 'styles.scss',\n})\nexport class Q2EditableField {\n @Prop({ reflect: true, mutable: true }) value: string = '';\n @Prop({ reflect: true, mutable: true }) editing: boolean = false;\n @Prop({ reflect: true, mutable: true }) label: string = '';\n @Prop({ reflect: true, mutable: true }) hideLabel: boolean;\n @Prop({ reflect: true }) type: Q2Input['type'];\n @Prop({ reflect: true }) formatModifier: string;\n @Prop({ reflect: true }) truncated: boolean;\n @Prop({ reflect: true }) maxlength: number;\n @Prop({ reflect: true }) persistentLabel: boolean;\n @Prop({ reflect: true }) disabled: boolean;\n @Prop({ reflect: true }) block: boolean;\n @Prop() hints: string[];\n @Prop() errors: string[];\n\n /** @deprecated */\n @Prop({ reflect: true, mutable: true }) ariaLabel: string;\n\n scheduledAfterRender: (() => void)[] = [];\n\n @Element() hostElement: HTMLElement;\n inputElement: HTMLQ2InputElement;\n editBtnElement: HTMLQ2BtnElement;\n cancelBtnElement: HTMLQ2BtnElement;\n saveBtnElement: HTMLQ2BtnElement;\n\n @State() formattedValue: string;\n innerValue: string;\n defaultValue: string = this.value;\n\n get locLabel() {\n return (this.label && loc(this.label)) || '';\n }\n\n /////// LIFECYCLE HOOKS ///////\n\n componentWillLoad() {\n handleAriaLabel(this);\n }\n\n componentDidRender() {\n this.scheduledAfterRender.forEach(fn => fn());\n this.scheduledAfterRender = [];\n this.formattedValue = (this.inputElement as IExtendedQ2InputElement).formattedValue;\n }\n\n componentDidLoad() {\n overrideFocus(this.hostElement);\n }\n\n //////// OBSERVERS ////////\n\n @Watch('errors')\n errorsObserver() {\n const { editing, errors = [] } = this;\n const focusedElement = this.hostElement.shadowRoot.activeElement;\n const isInputFocused = focusedElement?.tagName === 'Q2-INPUT' ?? false;\n const hasErrors = errors.length;\n if (isInputFocused || !focusedElement || !editing || !hasErrors) return;\n this.inputElement.focus();\n }\n\n @Watch('ariaLabel')\n ariaLabelObserver() {\n handleAriaLabel(this);\n }\n\n @Watch('editing')\n observesEditing(newValue: boolean, oldValue: boolean) {\n if (newValue === oldValue) return;\n this.scheduledAfterRender.push(this.hostElement.focus);\n }\n\n get wrapperClass() {\n return `q2-editable-field-wrapper ${this.editing ? 'editing' : ''}`;\n }\n\n ///////// HOST ELEMENT EVENTS //////\n\n @Listen('change')\n onHostElementChange(event: CustomEvent) {\n if (!isEventFromElement(event, this.hostElement) || this.hostElement.onchange) return;\n switch (event.detail.name) {\n case 'save':\n this.value = event.detail.value;\n break;\n\n case 'cancel':\n this.inputElement.value = this.value;\n break;\n }\n\n this.editing = event.detail.editing;\n }\n\n @Listen('focus')\n delegateFocus(event: FocusEvent) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.hostElement.shadowRoot.querySelector<HTMLElement>(this.editing ? 'q2-input' : 'q2-btn.begin-edit').focus();\n }\n\n ///////// EVENTS /////////\n\n @Event() input: EventEmitter;\n @Event() change: EventEmitter;\n\n /// Methods ///\n @Method()\n clickEdit() {\n if (this.editing) return;\n this.editBtnElement?.click();\n }\n\n @Method()\n clickCancel() {\n if (!this.editing) return;\n this.cancelBtnElement?.click();\n }\n\n @Method()\n clickSave() {\n if (!this.editing) return;\n this.saveBtnElement?.click();\n }\n\n @Method()\n async setValue(value: string, options: { clickSave?: boolean } = { clickSave: true }) {\n await this.clickEdit();\n await waitForNextPaint();\n\n await this.inputElement.setValue(value);\n\n if (options.clickSave) {\n await this.clickSave();\n await waitForNextPaint();\n }\n }\n\n //////// ACTIONS /////////\n\n inputInput = (event: Q2InputCustomEvent<IEventDetail> & InputEvent) => {\n event.stopPropagation();\n this.input.emit(event.detail);\n this.formattedValue = event.detail.formattedValue;\n this.innerValue = event.detail.value;\n };\n\n inputChange = (e: CustomEvent) => {\n e.stopPropagation();\n };\n\n inputKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' || e.key === 'Esc') {\n e.preventDefault();\n this.cancelClick();\n return;\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n this.saveClick();\n return;\n }\n };\n\n inputClick = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n saveClick = (event?: MouseEvent) => {\n event && event.stopPropagation();\n const valueFromInputProp = this.hostElement.shadowRoot.querySelector('q2-input').value;\n this.defaultValue = valueFromInputProp;\n this.change.emit({\n editing: false,\n name: 'save',\n value: this.innerValue || valueFromInputProp,\n formattedValue: this.formattedValue || valueFromInputProp,\n });\n\n setTimeout(() => {\n const { errors = [] } = this;\n if (!errors.length) return;\n this.hostElement.focus();\n }, 1);\n };\n\n editClick = (event: MouseEvent) => {\n event?.stopPropagation();\n this.change.emit({ editing: true, name: 'edit' });\n };\n\n cancelClick = (event?: MouseEvent) => {\n event?.stopPropagation();\n this.change.emit({ editing: false, name: 'cancel' });\n this.hostElement.shadowRoot.querySelector('q2-input').value = this.defaultValue;\n };\n\n render() {\n return (\n <div>\n {this.generateEditStateDOM()}\n {this.generateReadStateDOM()}\n </div>\n );\n }\n\n generateEditStateDOM() {\n return (\n <div\n class={this.wrapperClass}\n hidden={!this.editing}\n >\n <q2-input\n ref={el => (this.inputElement = el)}\n label={this.locLabel}\n hideLabel={this.hideLabel}\n value={this.value}\n hints={(Array.isArray(this.hints) && this.hints.map(str => loc(str))) || undefined}\n errors={(Array.isArray(this.errors) && this.errors.map(str => loc(str))) || undefined}\n type={this.type}\n disabled={this.disabled}\n formatModifier={this.formatModifier}\n maxlength={this.maxlength}\n test-id=\"editableInput\"\n onInput={this.inputInput}\n onChange={this.inputChange}\n onKeyDown={this.inputKeyDown}\n onClick={this.inputClick}\n />\n <q2-btn\n ref={el => (this.cancelBtnElement = el)}\n class=\"cancel-edit\"\n label={`${loc('tecton.element.editableField.cancel')} ${this.locLabel}`}\n hide-label\n test-id=\"cancelButton\"\n onClick={this.cancelClick}\n >\n <q2-icon type=\"close\" />\n </q2-btn>\n <q2-btn\n ref={el => (this.saveBtnElement = el)}\n class=\"save-edit\"\n label={`${loc('tecton.element.editableField.save')} ${this.locLabel}`}\n hide-label\n test-id=\"saveButton\"\n onClick={this.saveClick}\n >\n <q2-icon type=\"checkmark\" />\n </q2-btn>\n </div>\n );\n }\n\n generateReadStateDOM() {\n if (this.persistentLabel && this.locLabel) {\n return (\n <div\n class={this.wrapperClass}\n hidden={this.editing}\n >\n <dl>\n <dt class=\"read-state-label\">{this.locLabel}</dt>\n <dd>\n <span class=\"text-wrapper\">{this.formattedValue || this.value}</span>\n {this.generateEditBtn()}\n </dd>\n </dl>\n </div>\n );\n }\n return (\n <div\n class={this.wrapperClass}\n hidden={this.editing}\n >\n <div class=\"text-wrapper\">{this.formattedValue || this.value}</div>\n {this.generateEditBtn()}\n </div>\n );\n }\n\n generateEditBtn() {\n return (\n <q2-btn\n ref={el => (this.editBtnElement = el)}\n class=\"begin-edit\"\n label={`${loc('tecton.element.editableField.edit')} ${this.locLabel}`}\n hide-label\n disabled={this.disabled}\n test-id=\"editButton\"\n onClick={this.editClick}\n >\n <q2-icon type=\"edit\" />\n </q2-btn>\n );\n }\n}\n"],"version":3}
|
|
@@ -158,9 +158,9 @@ const Q2Pill$1 = /*@__PURE__*/ proxyCustomElement(class Q2Pill extends HTMLEleme
|
|
|
158
158
|
get buttonContent() {
|
|
159
159
|
const { label, selectedOptions, selectedOptionElements, optionCount } = this;
|
|
160
160
|
if (!optionCount || selectedOptionElements.length === 0)
|
|
161
|
-
return label;
|
|
161
|
+
return loc(label);
|
|
162
162
|
else if (selectedOptionElements.length === 1)
|
|
163
|
-
return selectedOptionElements[0].display;
|
|
163
|
+
return loc(selectedOptionElements[0].display);
|
|
164
164
|
return loc('tecton.element.pill.activeCount', { count: selectedOptions.length });
|
|
165
165
|
}
|
|
166
166
|
get truncatedButtonContent() {
|