@siemens/ix 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/_commonjsHelpers.js +21 -0
- package/components/_commonjsHelpers.js.map +1 -0
- package/components/a11y.js +79 -0
- package/components/a11y.js.map +1 -0
- package/components/animation.js +19 -0
- package/components/animation.js.map +1 -0
- package/components/anime.es.js +1311 -0
- package/components/anime.es.js.map +1 -0
- package/components/application-header.js +95 -0
- package/components/application-header.js.map +1 -0
- package/components/avatar.js +53 -0
- package/components/avatar.js.map +1 -0
- package/components/base-button.js +47 -0
- package/components/base-button.js.map +1 -0
- package/components/base-icon-button.js +18 -0
- package/components/base-icon-button.js.map +1 -0
- package/components/breadcrumb-item.js +92 -0
- package/components/breadcrumb-item.js.map +1 -0
- package/components/breakpoints.js +25 -0
- package/components/breakpoints.js.map +1 -0
- package/components/burger-menu.js +55 -0
- package/components/burger-menu.js.map +1 -0
- package/components/button.js +91 -0
- package/components/button.js.map +1 -0
- package/components/card-accordion.js +72 -0
- package/components/card-accordion.js.map +1 -0
- package/components/card-content.js +32 -0
- package/components/card-content.js.map +1 -0
- package/components/card-title.js +32 -0
- package/components/card-title.js.map +1 -0
- package/components/card.js +36 -0
- package/components/card.js.map +1 -0
- package/components/context.js +101 -0
- package/components/context.js.map +1 -0
- package/components/custom-elements.d.ts +10 -0
- package/components/date-picker.js +372 -0
- package/components/date-picker.js.map +1 -0
- package/components/date-time-card.js +45 -0
- package/components/date-time-card.js.map +1 -0
- package/components/default-tree-item.js +22 -0
- package/components/default-tree-item.js.map +1 -0
- package/components/divider.js +32 -0
- package/components/divider.js.map +1 -0
- package/components/dropdown-item.js +69 -0
- package/components/dropdown-item.js.map +1 -0
- package/components/dropdown.js +346 -0
- package/components/dropdown.js.map +1 -0
- package/components/filter-chip.js +56 -0
- package/components/filter-chip.js.map +1 -0
- package/components/flip-tile-state.js +20 -0
- package/components/flip-tile-state.js.map +1 -0
- package/components/floating-ui.dom.esm.js +1512 -0
- package/components/floating-ui.dom.esm.js.map +1 -0
- package/components/group-context-menu.js +73 -0
- package/components/group-context-menu.js.map +1 -0
- package/components/group-item.js +58 -0
- package/components/group-item.js.map +1 -0
- package/components/icon-button.js +99 -0
- package/components/icon-button.js.map +1 -0
- package/components/index.d.ts +27 -0
- package/components/index.js +101 -0
- package/components/index.js.map +1 -0
- package/components/ix-action-card.d.ts +11 -0
- package/components/ix-action-card.js +66 -0
- package/components/ix-action-card.js.map +1 -0
- package/components/ix-application-header.d.ts +11 -0
- package/components/ix-application-header.js +8 -0
- package/components/ix-application-header.js.map +1 -0
- package/components/ix-application-sidebar.d.ts +11 -0
- package/components/ix-application-sidebar.js +63 -0
- package/components/ix-application-sidebar.js.map +1 -0
- package/components/ix-application.d.ts +11 -0
- package/components/ix-application.js +128 -0
- package/components/ix-application.js.map +1 -0
- package/components/ix-avatar.d.ts +11 -0
- package/components/ix-avatar.js +8 -0
- package/components/ix-avatar.js.map +1 -0
- package/components/ix-basic-navigation.d.ts +11 -0
- package/components/ix-basic-navigation.js +132 -0
- package/components/ix-basic-navigation.js.map +1 -0
- package/components/ix-blind.d.ts +11 -0
- package/components/ix-blind.js +128 -0
- package/components/ix-blind.js.map +1 -0
- package/components/ix-breadcrumb-item.d.ts +11 -0
- package/components/ix-breadcrumb-item.js +8 -0
- package/components/ix-breadcrumb-item.js.map +1 -0
- package/components/ix-breadcrumb.d.ts +11 -0
- package/components/ix-breadcrumb.js +151 -0
- package/components/ix-breadcrumb.js.map +1 -0
- package/components/ix-burger-menu.d.ts +11 -0
- package/components/ix-burger-menu.js +8 -0
- package/components/ix-burger-menu.js.map +1 -0
- package/components/ix-button.d.ts +11 -0
- package/components/ix-button.js +8 -0
- package/components/ix-button.js.map +1 -0
- package/components/ix-card-accordion.d.ts +11 -0
- package/components/ix-card-accordion.js +8 -0
- package/components/ix-card-accordion.js.map +1 -0
- package/components/ix-card-content.d.ts +11 -0
- package/components/ix-card-content.js +8 -0
- package/components/ix-card-content.js.map +1 -0
- package/components/ix-card-list.d.ts +11 -0
- package/components/ix-card-list.js +228 -0
- package/components/ix-card-list.js.map +1 -0
- package/components/ix-card-title.d.ts +11 -0
- package/components/ix-card-title.js +8 -0
- package/components/ix-card-title.js.map +1 -0
- package/components/ix-card.d.ts +11 -0
- package/components/ix-card.js +8 -0
- package/components/ix-card.js.map +1 -0
- package/components/ix-category-filter.d.ts +11 -0
- package/components/ix-category-filter.js +464 -0
- package/components/ix-category-filter.js.map +1 -0
- package/components/ix-chip.d.ts +11 -0
- package/components/ix-chip.js +98 -0
- package/components/ix-chip.js.map +1 -0
- package/components/ix-col.d.ts +11 -0
- package/components/ix-col.js +96 -0
- package/components/ix-col.js.map +1 -0
- package/components/ix-content-header.d.ts +11 -0
- package/components/ix-content-header.js +63 -0
- package/components/ix-content-header.js.map +1 -0
- package/components/ix-content.d.ts +11 -0
- package/components/ix-content.js +48 -0
- package/components/ix-content.js.map +1 -0
- package/components/ix-css-grid-item.d.ts +11 -0
- package/components/ix-css-grid-item.js +40 -0
- package/components/ix-css-grid-item.js.map +1 -0
- package/components/ix-css-grid.d.ts +11 -0
- package/components/ix-css-grid.js +113 -0
- package/components/ix-css-grid.js.map +1 -0
- package/components/ix-date-picker.d.ts +11 -0
- package/components/ix-date-picker.js +8 -0
- package/components/ix-date-picker.js.map +1 -0
- package/components/ix-date-time-card.d.ts +11 -0
- package/components/ix-date-time-card.js +8 -0
- package/components/ix-date-time-card.js.map +1 -0
- package/components/ix-datetime-picker.d.ts +11 -0
- package/components/ix-datetime-picker.js +149 -0
- package/components/ix-datetime-picker.js.map +1 -0
- package/components/ix-divider.d.ts +11 -0
- package/components/ix-divider.js +8 -0
- package/components/ix-divider.js.map +1 -0
- package/components/ix-drawer.d.ts +11 -0
- package/components/ix-drawer.js +145 -0
- package/components/ix-drawer.js.map +1 -0
- package/components/ix-dropdown-button.d.ts +11 -0
- package/components/ix-dropdown-button.js +92 -0
- package/components/ix-dropdown-button.js.map +1 -0
- package/components/ix-dropdown-header.d.ts +11 -0
- package/components/ix-dropdown-header.js +44 -0
- package/components/ix-dropdown-header.js.map +1 -0
- package/components/ix-dropdown-item.d.ts +11 -0
- package/components/ix-dropdown-item.js +8 -0
- package/components/ix-dropdown-item.js.map +1 -0
- package/components/ix-dropdown-quick-actions.d.ts +11 -0
- package/components/ix-dropdown-quick-actions.js +35 -0
- package/components/ix-dropdown-quick-actions.js.map +1 -0
- package/components/ix-dropdown.d.ts +11 -0
- package/components/ix-dropdown.js +8 -0
- package/components/ix-dropdown.js.map +1 -0
- package/components/ix-empty-state.d.ts +11 -0
- package/components/ix-empty-state.js +65 -0
- package/components/ix-empty-state.js.map +1 -0
- package/components/ix-event-list-item.d.ts +11 -0
- package/components/ix-event-list-item.js +61 -0
- package/components/ix-event-list-item.js.map +1 -0
- package/components/ix-event-list.d.ts +11 -0
- package/components/ix-event-list.js +143 -0
- package/components/ix-event-list.js.map +1 -0
- package/components/ix-expanding-search.d.ts +11 -0
- package/components/ix-expanding-search.js +119 -0
- package/components/ix-expanding-search.js.map +1 -0
- package/components/ix-filter-chip.d.ts +11 -0
- package/components/ix-filter-chip.js +8 -0
- package/components/ix-filter-chip.js.map +1 -0
- package/components/ix-flip-tile-content.d.ts +11 -0
- package/components/ix-flip-tile-content.js +38 -0
- package/components/ix-flip-tile-content.js.map +1 -0
- package/components/ix-flip-tile.d.ts +11 -0
- package/components/ix-flip-tile.js +121 -0
- package/components/ix-flip-tile.js.map +1 -0
- package/components/ix-form-field.d.ts +11 -0
- package/components/ix-form-field.js +43 -0
- package/components/ix-form-field.js.map +1 -0
- package/components/ix-group-context-menu.d.ts +11 -0
- package/components/ix-group-context-menu.js +8 -0
- package/components/ix-group-context-menu.js.map +1 -0
- package/components/ix-group-item.d.ts +11 -0
- package/components/ix-group-item.js +8 -0
- package/components/ix-group-item.js.map +1 -0
- package/components/ix-group.d.ts +11 -0
- package/components/ix-group.js +178 -0
- package/components/ix-group.js.map +1 -0
- package/components/ix-icon-button.d.ts +11 -0
- package/components/ix-icon-button.js +8 -0
- package/components/ix-icon-button.js.map +1 -0
- package/components/ix-icon-toggle-button.d.ts +11 -0
- package/components/ix-icon-toggle-button.js +116 -0
- package/components/ix-icon-toggle-button.js.map +1 -0
- package/components/ix-input-group.d.ts +11 -0
- package/components/ix-input-group.js +130 -0
- package/components/ix-input-group.js.map +1 -0
- package/components/ix-key-value-list.d.ts +11 -0
- package/components/ix-key-value-list.js +38 -0
- package/components/ix-key-value-list.js.map +1 -0
- package/components/ix-key-value.d.ts +11 -0
- package/components/ix-key-value.js +47 -0
- package/components/ix-key-value.js.map +1 -0
- package/components/ix-kpi.d.ts +11 -0
- package/components/ix-kpi.js +69 -0
- package/components/ix-kpi.js.map +1 -0
- package/components/ix-layout-grid.d.ts +11 -0
- package/components/ix-layout-grid.js +47 -0
- package/components/ix-layout-grid.js.map +1 -0
- package/components/ix-link-button.d.ts +11 -0
- package/components/ix-link-button.js +48 -0
- package/components/ix-link-button.js.map +1 -0
- package/components/ix-map-navigation-overlay.d.ts +11 -0
- package/components/ix-map-navigation-overlay.js +8 -0
- package/components/ix-map-navigation-overlay.js.map +1 -0
- package/components/ix-map-navigation.d.ts +11 -0
- package/components/ix-map-navigation.js +226 -0
- package/components/ix-map-navigation.js.map +1 -0
- package/components/ix-menu-about-item.d.ts +11 -0
- package/components/ix-menu-about-item.js +38 -0
- package/components/ix-menu-about-item.js.map +1 -0
- package/components/ix-menu-about-news.d.ts +11 -0
- package/components/ix-menu-about-news.js +83 -0
- package/components/ix-menu-about-news.js.map +1 -0
- package/components/ix-menu-about.d.ts +11 -0
- package/components/ix-menu-about.js +119 -0
- package/components/ix-menu-about.js.map +1 -0
- package/components/ix-menu-avatar-item.d.ts +11 -0
- package/components/ix-menu-avatar-item.js +8 -0
- package/components/ix-menu-avatar-item.js.map +1 -0
- package/components/ix-menu-avatar.d.ts +11 -0
- package/components/ix-menu-avatar.js +77 -0
- package/components/ix-menu-avatar.js.map +1 -0
- package/components/ix-menu-category.d.ts +11 -0
- package/components/ix-menu-category.js +190 -0
- package/components/ix-menu-category.js.map +1 -0
- package/components/ix-menu-item.d.ts +11 -0
- package/components/ix-menu-item.js +8 -0
- package/components/ix-menu-item.js.map +1 -0
- package/components/ix-menu-settings-item.d.ts +11 -0
- package/components/ix-menu-settings-item.js +38 -0
- package/components/ix-menu-settings-item.js.map +1 -0
- package/components/ix-menu-settings.d.ts +11 -0
- package/components/ix-menu-settings.js +106 -0
- package/components/ix-menu-settings.js.map +1 -0
- package/components/ix-menu.d.ts +11 -0
- package/components/ix-menu.js +508 -0
- package/components/ix-menu.js.map +1 -0
- package/components/ix-message-bar.d.ts +11 -0
- package/components/ix-message-bar.js +87 -0
- package/components/ix-message-bar.js.map +1 -0
- package/components/ix-modal-content.d.ts +11 -0
- package/components/ix-modal-content.js +35 -0
- package/components/ix-modal-content.js.map +1 -0
- package/components/ix-modal-example.d.ts +11 -0
- package/components/ix-modal-example.js +58 -0
- package/components/ix-modal-example.js.map +1 -0
- package/components/ix-modal-footer.d.ts +11 -0
- package/components/ix-modal-footer.js +35 -0
- package/components/ix-modal-footer.js.map +1 -0
- package/components/ix-modal-header.d.ts +11 -0
- package/components/ix-modal-header.js +84 -0
- package/components/ix-modal-header.js.map +1 -0
- package/components/ix-modal-loading.d.ts +11 -0
- package/components/ix-modal-loading.js +41 -0
- package/components/ix-modal-loading.js.map +1 -0
- package/components/ix-modal.d.ts +11 -0
- package/components/ix-modal.js +156 -0
- package/components/ix-modal.js.map +1 -0
- package/components/ix-pagination.d.ts +11 -0
- package/components/ix-pagination.js +211 -0
- package/components/ix-pagination.js.map +1 -0
- package/components/ix-pill.d.ts +11 -0
- package/components/ix-pill.js +78 -0
- package/components/ix-pill.js.map +1 -0
- package/components/ix-push-card.d.ts +11 -0
- package/components/ix-push-card.js +80 -0
- package/components/ix-push-card.js.map +1 -0
- package/components/ix-row.d.ts +11 -0
- package/components/ix-row.js +35 -0
- package/components/ix-row.js.map +1 -0
- package/components/ix-select-item.d.ts +11 -0
- package/components/ix-select-item.js +8 -0
- package/components/ix-select-item.js.map +1 -0
- package/components/ix-select.d.ts +11 -0
- package/components/ix-select.js +8 -0
- package/components/ix-select.js.map +1 -0
- package/components/ix-slider.d.ts +11 -0
- package/components/ix-slider.js +192 -0
- package/components/ix-slider.js.map +1 -0
- package/components/ix-spinner.d.ts +11 -0
- package/components/ix-spinner.js +8 -0
- package/components/ix-spinner.js.map +1 -0
- package/components/ix-split-button-item.d.ts +11 -0
- package/components/ix-split-button-item.js +51 -0
- package/components/ix-split-button-item.js.map +1 -0
- package/components/ix-split-button.d.ts +11 -0
- package/components/ix-split-button.js +97 -0
- package/components/ix-split-button.js.map +1 -0
- package/components/ix-tab-item.d.ts +11 -0
- package/components/ix-tab-item.js +8 -0
- package/components/ix-tab-item.js.map +1 -0
- package/components/ix-tabs.d.ts +11 -0
- package/components/ix-tabs.js +8 -0
- package/components/ix-tabs.js.map +1 -0
- package/components/ix-tile.d.ts +11 -0
- package/components/ix-tile.js +59 -0
- package/components/ix-tile.js.map +1 -0
- package/components/ix-time-picker.d.ts +11 -0
- package/components/ix-time-picker.js +8 -0
- package/components/ix-time-picker.js.map +1 -0
- package/components/ix-toast-container.d.ts +11 -0
- package/components/ix-toast-container.js +124 -0
- package/components/ix-toast-container.js.map +1 -0
- package/components/ix-toast.d.ts +11 -0
- package/components/ix-toast.js +8 -0
- package/components/ix-toast.js.map +1 -0
- package/components/ix-toggle-button.d.ts +11 -0
- package/components/ix-toggle-button.js +105 -0
- package/components/ix-toggle-button.js.map +1 -0
- package/components/ix-toggle.d.ts +11 -0
- package/components/ix-toggle.js +62 -0
- package/components/ix-toggle.js.map +1 -0
- package/components/ix-tooltip.d.ts +11 -0
- package/components/ix-tooltip.js +8 -0
- package/components/ix-tooltip.js.map +1 -0
- package/components/ix-tree-item.d.ts +11 -0
- package/components/ix-tree-item.js +8 -0
- package/components/ix-tree-item.js.map +1 -0
- package/components/ix-tree.d.ts +11 -0
- package/components/ix-tree.js +727 -0
- package/components/ix-tree.js.map +1 -0
- package/components/ix-typography.d.ts +11 -0
- package/components/ix-typography.js +8 -0
- package/components/ix-typography.js.map +1 -0
- package/components/ix-upload.d.ts +11 -0
- package/components/ix-upload.js +147 -0
- package/components/ix-upload.js.map +1 -0
- package/components/ix-validation-tooltip.d.ts +11 -0
- package/components/ix-validation-tooltip.js +170 -0
- package/components/ix-validation-tooltip.js.map +1 -0
- package/components/ix-workflow-step.d.ts +11 -0
- package/components/ix-workflow-step.js +120 -0
- package/components/ix-workflow-step.js.map +1 -0
- package/components/ix-workflow-steps.d.ts +11 -0
- package/components/ix-workflow-steps.js +99 -0
- package/components/ix-workflow-steps.js.map +1 -0
- package/components/logical-filter-operator.js +35 -0
- package/components/logical-filter-operator.js.map +1 -0
- package/components/luxon.js +7828 -0
- package/components/luxon.js.map +1 -0
- package/components/map-navigation-overlay.js +89 -0
- package/components/map-navigation-overlay.js.map +1 -0
- package/components/menu-avatar-item.js +45 -0
- package/components/menu-avatar-item.js.map +1 -0
- package/components/menu-item.js +92 -0
- package/components/menu-item.js.map +1 -0
- package/components/menu-service.js +156 -0
- package/components/menu-service.js.map +1 -0
- package/components/modal.js +245 -0
- package/components/modal.js.map +1 -0
- package/components/mutation-observer.js +13 -0
- package/components/mutation-observer.js.map +1 -0
- package/components/my-component.d.ts +11 -0
- package/components/my-component.js +34 -0
- package/components/my-component.js.map +1 -0
- package/components/package.json +8 -0
- package/components/rwd.util.js +41 -0
- package/components/rwd.util.js.map +1 -0
- package/components/select-item.js +92 -0
- package/components/select-item.js.map +1 -0
- package/components/select.js +410 -0
- package/components/select.js.map +1 -0
- package/components/shadow-dom.js +21 -0
- package/components/shadow-dom.js.map +1 -0
- package/components/spinner.js +48 -0
- package/components/spinner.js.map +1 -0
- package/components/tab-item.js +87 -0
- package/components/tab-item.js.map +1 -0
- package/components/tabs.js +227 -0
- package/components/tabs.js.map +1 -0
- package/components/theme-switcher.js +123 -0
- package/components/theme-switcher.js.map +1 -0
- package/components/time-picker.js +252 -0
- package/components/time-picker.js.map +1 -0
- package/components/toast.js +105 -0
- package/components/toast.js.map +1 -0
- package/components/tooltip.js +197 -0
- package/components/tooltip.js.map +1 -0
- package/components/tree-item.js +51 -0
- package/components/tree-item.js.map +1 -0
- package/components/typed-event.js +46 -0
- package/components/typed-event.js.map +1 -0
- package/components/typography.js +76 -0
- package/components/typography.js.map +1 -0
- package/components/upload-file-state.js +19 -0
- package/components/upload-file-state.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
2
|
+
|
|
3
|
+
const cardCss = ":host{display:flex;position:relative;flex-direction:column;align-items:flex-start;align-self:flex-start;overflow:hidden;width:20rem;border:1px solid var(--ix-card-border-color, var(--theme-color-soft-bdr));border-radius:var(--theme-default-border-radius)}:host *,:host *::after,:host *::before{box-sizing:border-box}:host ::-webkit-scrollbar-button{display:none}:host ::-webkit-scrollbar{width:0.5rem;height:0.5rem}:host ::-webkit-scrollbar-track{border-radius:5px;background:var(--theme-scrollbar-track--background)}:host ::-webkit-scrollbar-track:hover{background:var(--theme-scrollbar-track--background--hover)}:host ::-webkit-scrollbar-thumb{border-radius:5px;background:var(--theme-scrollbar-thumb--background)}:host ::-webkit-scrollbar-thumb:hover{background:var(--theme-scrollbar-thumb--background--hover)}:host ::-webkit-scrollbar-corner{display:none}:host .card-content{display:block;position:relative;flex-shrink:0;flex-grow:1;width:100%;height:calc(100% - 2rem);background-color:var(--ix-card-background, transparent);border-top-left-radius:var(--theme-default-border-radius);border-top-right-radius:var(--theme-default-border-radius)}:host .card-footer{display:flex;position:relative;width:100%}:host(.card-insight){--ix-card-background:transparent;--ix-card-border-color:var(--theme-color-soft-bdr)}:host(.card-notification){--ix-card-background:var(--theme-color-component-1)}:host(.card-alarm){--ix-card-background:var(--theme-color-alarm);color:var(--theme-color-alarm--contrast)}:host(.card-critical){--ix-card-background:var(--theme-color-critical);color:var(--theme-color-critical--contrast)}:host(.card-warning){--ix-card-background:var(--theme-color-warning);color:var(--theme-color-warning--contrast)}:host(.card-success){--ix-card-background:var(--theme-color-success);color:var(--theme-color-success--contrast)}:host(.card-info){--ix-card-background:var(--theme-color-info);color:var(--theme-color-info--contrast)}:host(.card-neutral){--ix-card-background:var(--theme-color-neutral);color:var(--theme-color-neutral--contrast)}:host(.card-primary){--ix-card-background:var(--theme-color-primary);color:var(--theme-color-neutral--contrast)}:host(:not(.card-insight)){--ix-card-border-color:transparent}";
|
|
4
|
+
|
|
5
|
+
const Card = /*@__PURE__*/ proxyCustomElement(class Card extends HTMLElement {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.__registerHost();
|
|
9
|
+
this.__attachShadow();
|
|
10
|
+
this.variant = 'insight';
|
|
11
|
+
}
|
|
12
|
+
render() {
|
|
13
|
+
return (h(Host, { class: `card-${this.variant}` }, h("div", { class: "card-content" }, h("slot", null)), h("div", { class: "card-footer" }, h("slot", { name: "card-accordion" }))));
|
|
14
|
+
}
|
|
15
|
+
get hostElement() { return this; }
|
|
16
|
+
static get style() { return cardCss; }
|
|
17
|
+
}, [1, "ix-card", {
|
|
18
|
+
"variant": [1]
|
|
19
|
+
}]);
|
|
20
|
+
function defineCustomElement() {
|
|
21
|
+
if (typeof customElements === "undefined") {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const components = ["ix-card"];
|
|
25
|
+
components.forEach(tagName => { switch (tagName) {
|
|
26
|
+
case "ix-card":
|
|
27
|
+
if (!customElements.get(tagName)) {
|
|
28
|
+
customElements.define(tagName, Card);
|
|
29
|
+
}
|
|
30
|
+
break;
|
|
31
|
+
} });
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { Card as C, defineCustomElement as d };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"card.js","mappings":";;AAAA,MAAM,OAAO,GAAG,krEAAkrE;;MCqBrrE,IAAI;;;;;mBAMgB,SAAS;;EAExC,MAAM;IACJ,QACE,EAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,OAAO,EAAE,IACjC,WAAK,KAAK,EAAC,cAAc,IACvB,eAAa,CACT,EACN,WAAK,KAAK,EAAC,aAAa,IACtB,YAAM,IAAI,EAAC,gBAAgB,GAAQ,CAC/B,CACD,EACP;GACH;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["./src/components/card/card.scss?tag=ix-card&encapsulation=shadow","./src/components/card/card.tsx"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n@import 'mixins/shadow-dom/component';\n\n:host {\n @include ix-component;\n display: flex;\n position: relative;\n flex-direction: column;\n align-items: flex-start;\n align-self: flex-start;\n overflow: hidden;\n\n width: 20rem;\n\n border: 1px solid var(--ix-card-border-color, var(--theme-color-soft-bdr));\n border-radius: var(--theme-default-border-radius);\n\n .card-content {\n display: block;\n position: relative;\n flex-shrink: 0;\n flex-grow: 1;\n width: 100%;\n height: calc(100% - 2rem);\n background-color: var(--ix-card-background, transparent);\n border-top-left-radius: var(--theme-default-border-radius);\n border-top-right-radius: var(--theme-default-border-radius);\n }\n\n .card-footer {\n display: flex;\n position: relative;\n width: 100%;\n }\n}\n\n:host(.card-insight) {\n --ix-card-background: transparent;\n --ix-card-border-color: var(--theme-color-soft-bdr);\n}\n\n:host(.card-notification) {\n --ix-card-background: var(--theme-color-component-1);\n}\n\n:host(.card-alarm) {\n --ix-card-background: var(--theme-color-alarm);\n color: var(--theme-color-alarm--contrast);\n}\n\n:host(.card-critical) {\n --ix-card-background: var(--theme-color-critical);\n color: var(--theme-color-critical--contrast);\n}\n\n:host(.card-warning) {\n --ix-card-background: var(--theme-color-warning);\n color: var(--theme-color-warning--contrast);\n}\n\n:host(.card-success) {\n --ix-card-background: var(--theme-color-success);\n color: var(--theme-color-success--contrast);\n}\n\n:host(.card-info) {\n --ix-card-background: var(--theme-color-info);\n color: var(--theme-color-info--contrast);\n}\n\n:host(.card-neutral) {\n --ix-card-background: var(--theme-color-neutral);\n color: var(--theme-color-neutral--contrast);\n}\n\n:host(.card-primary) {\n --ix-card-background: var(--theme-color-primary);\n color: var(--theme-color-neutral--contrast);\n}\n\n:host(:not(.card-insight)) {\n --ix-card-border-color: transparent;\n}\n","import { Component, Element, h, Host, Prop } from '@stencil/core';\n\nexport type CardVariant =\n | 'insight'\n | 'notification'\n | 'alarm'\n | 'critical'\n | 'warning'\n | 'info'\n | 'neutral'\n | 'success'\n | 'primary';\n\n/**\n * @since 1.6.0\n */\n@Component({\n tag: 'ix-card',\n styleUrl: 'card.scss',\n shadow: true,\n})\nexport class Card {\n @Element() hostElement: HTMLIxCardElement;\n\n /**\n * Card variant\n */\n @Prop() variant: CardVariant = 'insight';\n\n render() {\n return (\n <Host class={`card-${this.variant}`}>\n <div class=\"card-content\">\n <slot></slot>\n </div>\n <div class=\"card-footer\">\n <slot name=\"card-accordion\"></slot>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { T as TypedEvent } from './typed-event.js';
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* SPDX-FileCopyrightText: 2023 Siemens AG
|
|
5
|
+
*
|
|
6
|
+
* SPDX-License-Identifier: MIT
|
|
7
|
+
*
|
|
8
|
+
* This source code is licensed under the MIT license found in the
|
|
9
|
+
* LICENSE file in the root directory of this source tree.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* A function which creates a Context value object
|
|
13
|
+
*/
|
|
14
|
+
function createContext(name, initialValue) {
|
|
15
|
+
return {
|
|
16
|
+
name,
|
|
17
|
+
initialValue,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* An event fired by a context requester to signal it desires a named context.
|
|
22
|
+
*
|
|
23
|
+
* A provider should inspect the `context` property of the event to determine if it has a value that can
|
|
24
|
+
* satisfy the request, calling the `callback` with the requested value if so.
|
|
25
|
+
*
|
|
26
|
+
* If the requested context event contains a truthy `subscribe` value, then a provider can call the callback
|
|
27
|
+
* multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`
|
|
28
|
+
* function to the callback which requesters can invoke to indicate they no longer wish to receive these updates.
|
|
29
|
+
*/
|
|
30
|
+
class ContextEvent extends Event {
|
|
31
|
+
constructor(context, callback, subscribe) {
|
|
32
|
+
super('context-request', { bubbles: true, composed: true });
|
|
33
|
+
this.context = context;
|
|
34
|
+
this.callback = callback;
|
|
35
|
+
this.subscribe = subscribe;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function useContextConsumer(hostElement, context, onContextReceived, subscribe) {
|
|
39
|
+
let _unsubscribe;
|
|
40
|
+
hostElement.dispatchEvent(new ContextEvent(context, (ctx, unSub) => {
|
|
41
|
+
onContextReceived(ctx, unSub);
|
|
42
|
+
_unsubscribe = unSub;
|
|
43
|
+
}, subscribe));
|
|
44
|
+
return {
|
|
45
|
+
unsubscribe: () => {
|
|
46
|
+
_unsubscribe();
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function useContextProvider(hostElement, context, contextPayload) {
|
|
51
|
+
const requestContext = new TypedEvent();
|
|
52
|
+
const updateContext = new TypedEvent();
|
|
53
|
+
const requests = new Set();
|
|
54
|
+
hostElement.addEventListener('context-request', (requestContextEvent) => {
|
|
55
|
+
if ((requestContextEvent === null || requestContextEvent === void 0 ? void 0 : requestContextEvent.context.name) !== context.name) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
requestContextEvent.stopPropagation();
|
|
59
|
+
if (requestContextEvent.subscribe) {
|
|
60
|
+
requests.add(requestContextEvent);
|
|
61
|
+
}
|
|
62
|
+
requestContext.emit(requestContextEvent);
|
|
63
|
+
if (contextPayload) {
|
|
64
|
+
requestContextEvent.callback(contextPayload, () => {
|
|
65
|
+
requests.delete(requestContextEvent);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
updateContext.on((context) => {
|
|
70
|
+
requests.forEach((r) => r.callback(context, () => {
|
|
71
|
+
requests.delete(r);
|
|
72
|
+
}));
|
|
73
|
+
});
|
|
74
|
+
return {
|
|
75
|
+
emit: (context) => {
|
|
76
|
+
updateContext.emit(context);
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/*
|
|
82
|
+
* SPDX-FileCopyrightText: 2023 Siemens AG
|
|
83
|
+
*
|
|
84
|
+
* SPDX-License-Identifier: MIT
|
|
85
|
+
*
|
|
86
|
+
* This source code is licensed under the MIT license found in the
|
|
87
|
+
* LICENSE file in the root directory of this source tree.
|
|
88
|
+
*/
|
|
89
|
+
const closestIxMenu = (element) => {
|
|
90
|
+
const menuElement = element.closest('ix-menu');
|
|
91
|
+
return menuElement;
|
|
92
|
+
};
|
|
93
|
+
const ApplicationLayoutContext = createContext('application-layout-context', {
|
|
94
|
+
hideHeader: false,
|
|
95
|
+
host: null,
|
|
96
|
+
sidebar: false,
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
export { ApplicationLayoutContext as A, useContextConsumer as a, closestIxMenu as c, useContextProvider as u };
|
|
100
|
+
|
|
101
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"context.js","mappings":";;AAAA;;;;;;;;AA+BA;;;SAGgB,aAAa,CAC3B,IAAY,EACZ,YAAgB;EAEhB,OAAO;IACL,IAAI;IACJ,YAAY;GACb,CAAC;AACJ,CAAC;AAWD;;;;;;;;;;MAUa,YAAuC,SAAQ,KAAK;EAC/D,YACkB,OAAU,EACV,QAAyC,EACzC,SAAmB;IAEnC,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAJ5C,YAAO,GAAP,OAAO,CAAG;IACV,aAAQ,GAAR,QAAQ,CAAiC;IACzC,cAAS,GAAT,SAAS,CAAU;GAGpC;CACF;SAgBe,kBAAkB,CAIhC,WAAc,EACd,OAAU,EACV,iBAGS,EACT,SAAmB;EAEnB,IAAI,YAAwB,CAAC;EAC7B,WAAW,CAAC,aAAa,CACvB,IAAI,YAAY,CACd,OAAO,EACP,CAAC,GAAG,EAAE,KAAK;IACT,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,YAAY,GAAG,KAAK,CAAC;GACtB,EACD,SAAS,CACV,CACF,CAAC;EAEF,OAAO;IACL,WAAW,EAAE;MACX,YAAY,EAAE,CAAC;KAChB;GACF,CAAC;AACJ,CAAC;SAKe,kBAAkB,CAKhC,WAAc,EACd,OAAU,EACV,cAA+B;EAE/B,MAAM,cAAc,GAAG,IAAI,UAAU,EAAmB,CAAC;EACzD,MAAM,aAAa,GAAG,IAAI,UAAU,EAAkB,CAAC;EAEvD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgC,CAAC;EAEzD,WAAW,CAAC,gBAAgB,CAC1B,iBAAiB,EACjB,CAAC,mBAAoC;IACnC,IAAI,CAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,OAAO,CAAC,IAAI,MAAK,OAAO,CAAC,IAAI,EAAE;MACtD,OAAO;KACR;IAED,mBAAmB,CAAC,eAAe,EAAE,CAAC;IAEtC,IAAI,mBAAmB,CAAC,SAAS,EAAE;MACjC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;KACnC;IACD,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAEzC,IAAI,cAAc,EAAE;MAClB,mBAAmB,CAAC,QAAQ,CAAC,cAAc,EAAE;QAC3C,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;OACtC,CAAC,CAAC;KACJ;GACF,CACF,CAAC;EAEF,aAAa,CAAC,EAAE,CAAC,CAAC,OAAuB;IACvC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KACjB,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE;MAClB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACpB,CAAC,CACH,CAAC;GACH,CAAC,CAAC;EAEH,OAAO;IACL,IAAI,EAAE,CAAC,OAAuB;MAC5B,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC7B;GACF,CAAC;AACJ;;AC1KA;;;;;;;;MAWa,aAAa,GAAG,CAAC,OAAgB;EAC5C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;EAC/C,OAAO,WAAW,CAAC;AACrB,EAAE;MAEW,wBAAwB,GAAG,aAAa,CAIlD,4BAA4B,EAAE;EAC/B,UAAU,EAAE,KAAK;EACjB,IAAI,EAAE,IAAI;EACV,OAAO,EAAE,KAAK;CACf;;;;","names":[],"sources":["./src/components/utils/context.ts","./src/components/utils/application-layout/context.ts"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { TypedEvent } from './typed-event';\n\n/**\n * A Context object defines an optional initial value for a Context, as well as a name identifier for debugging purposes.\n */\nexport type Context<T> = {\n name: string;\n initialValue?: T;\n};\n\n/**\n * An unknown context type\n */\nexport type UnknownContext = Context<unknown>;\n\n/**\n * A helper type which can extract a Context value type from a Context type\n */\nexport type ContextType<T extends UnknownContext> = T extends Context<infer Y>\n ? Y\n : never;\n\n/**\n * A function which creates a Context value object\n */\nexport function createContext<T>(\n name: string,\n initialValue?: T\n): Readonly<Context<T>> {\n return {\n name,\n initialValue,\n };\n}\n\n/**\n * A callback which is provided by a context requester and is called with the value satisfying the request.\n * This callback can be called multiple times by context providers as the requested value is changed.\n */\nexport type ContextCallback<ValueType> = (\n value: ValueType,\n unsubscribe?: () => void\n) => void;\n\n/**\n * An event fired by a context requester to signal it desires a named context.\n *\n * A provider should inspect the `context` property of the event to determine if it has a value that can\n * satisfy the request, calling the `callback` with the requested value if so.\n *\n * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback\n * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`\n * function to the callback which requesters can invoke to indicate they no longer wish to receive these updates.\n */\nexport class ContextEvent<T extends UnknownContext> extends Event {\n public constructor(\n public readonly context: T,\n public readonly callback: ContextCallback<ContextType<T>>,\n public readonly subscribe?: boolean\n ) {\n super('context-request', { bubbles: true, composed: true });\n }\n}\n\ndeclare global {\n interface HTMLElementEventMap {\n /**\n * A 'context-request' event can be emitted by any element which desires\n * a context value to be injected by an external provider.\n */\n 'context-request': ContextEvent<UnknownContext>;\n }\n}\n\nexport type ContextConsumerSubscription = {\n unsubscribe: () => void;\n};\n\nexport function useContextConsumer<\n T extends HTMLElement,\n C extends UnknownContext\n>(\n hostElement: T,\n context: C,\n onContextReceived: (\n context: ContextType<C>,\n unsubscribe?: () => void\n ) => void,\n subscribe?: boolean\n): ContextConsumerSubscription {\n let _unsubscribe: () => void;\n hostElement.dispatchEvent(\n new ContextEvent(\n context,\n (ctx, unSub) => {\n onContextReceived(ctx, unSub);\n _unsubscribe = unSub;\n },\n subscribe\n )\n );\n\n return {\n unsubscribe: () => {\n _unsubscribe();\n },\n };\n}\nexport type ContextProvider<C extends Context<{}> = Context<unknown>> = {\n emit: (context: ContextType<C>) => void;\n};\n\nexport function useContextProvider<\n X extends {},\n C extends Context<X>,\n T extends HTMLElement = HTMLElement\n>(\n hostElement: T,\n context: C,\n contextPayload?: ContextType<C>\n): ContextProvider<C> {\n const requestContext = new TypedEvent<ContextEvent<C>>();\n const updateContext = new TypedEvent<ContextType<C>>();\n\n const requests = new Set<ContextEvent<UnknownContext>>();\n\n hostElement.addEventListener(\n 'context-request',\n (requestContextEvent: ContextEvent<C>) => {\n if (requestContextEvent?.context.name !== context.name) {\n return;\n }\n\n requestContextEvent.stopPropagation();\n\n if (requestContextEvent.subscribe) {\n requests.add(requestContextEvent);\n }\n requestContext.emit(requestContextEvent);\n\n if (contextPayload) {\n requestContextEvent.callback(contextPayload, () => {\n requests.delete(requestContextEvent);\n });\n }\n }\n );\n\n updateContext.on((context: ContextType<C>) => {\n requests.forEach((r) =>\n r.callback(context, () => {\n requests.delete(r);\n })\n );\n });\n\n return {\n emit: (context: ContextType<C>) => {\n updateContext.emit(context);\n },\n };\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { createContext } from '../context';\n\nexport const closestIxMenu = (element: Element) => {\n const menuElement = element.closest('ix-menu');\n return menuElement;\n};\n\nexport const ApplicationLayoutContext = createContext<{\n hideHeader: boolean;\n host: 'basic-navigation' | 'map-navigation' | null;\n sidebar?: boolean;\n}>('application-layout-context', {\n hideHeader: false,\n host: null,\n sidebar: false,\n});\n"],"version":3}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* SPDX-FileCopyrightText: 2023 Siemens AG
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE file in the root directory of this source tree.
|
|
8
|
+
*/
|
|
9
|
+
export * from '../dist/types/index';
|
|
10
|
+
export * from './index';
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, createEvent, h, Host, Fragment } from '@stencil/core/internal/client';
|
|
2
|
+
import { l as luxon } from './luxon.js';
|
|
3
|
+
import { d as defineCustomElement$5 } from './button.js';
|
|
4
|
+
import { d as defineCustomElement$4 } from './date-time-card.js';
|
|
5
|
+
import { d as defineCustomElement$3 } from './dropdown.js';
|
|
6
|
+
import { d as defineCustomElement$2 } from './icon-button.js';
|
|
7
|
+
import { d as defineCustomElement$1 } from './spinner.js';
|
|
8
|
+
|
|
9
|
+
const datePickerCss = ":host{display:block;position:relative;width:22rem}:host *,:host *::after,:host *::before{box-sizing:border-box}:host ::-webkit-scrollbar-button{display:none}:host ::-webkit-scrollbar{width:0.5rem;height:0.5rem}:host ::-webkit-scrollbar-track{border-radius:5px;background:var(--theme-scrollbar-track--background)}:host ::-webkit-scrollbar-track:hover{background:var(--theme-scrollbar-track--background--hover)}:host ::-webkit-scrollbar-thumb{border-radius:5px;background:var(--theme-scrollbar-thumb--background)}:host ::-webkit-scrollbar-thumb:hover{background:var(--theme-scrollbar-thumb--background--hover)}:host ::-webkit-scrollbar-corner{display:none}:host .header{display:flex;align-items:center;justify-content:space-between}:host .selector{flex-basis:100%;display:flex;align-items:center;justify-content:center;padding:0.25rem 1rem}:host .selector .dropdown{color:var(--theme-menu-item--color);font-size:14px;line-height:20px}:host .selector .fontSize{font-size:16px}:host .selector .capitalize{text-transform:capitalize}:host .selector .arrowYear{display:flex;position:relative;padding:0.75rem 2rem;align-items:center;cursor:pointer}:host .selector .arrowYear:hover{background-color:var(--theme-select-list-item--background--hover)}:host .selector .arrowYear.selected{background-color:var(--theme-select-list-item--background--selected)}:host .selector .arrowYear .arrowPosition{position:absolute;left:calc(1rem - 6px);top:calc(50% - 6px)}:host .selector .arrowYear .checkPosition{position:absolute;left:calc(1rem - 6px);top:calc(50% - 8px)}:host .selector .arrowYear .monthMargin{margin-left:10px}:host .wrapper{display:flex}:host .wrapper .overflow{overflow-y:scroll;max-height:250px}:host .grid{display:grid;grid-template-columns:repeat(8, 40px);grid-template-rows:repeat(7, 40px);align-items:center;justify-items:center;justify-content:center;color:var(--theme-datepicker-today--color)}:host .grid .calendar-item{position:relative;display:flex;justify-content:center;align-items:center;background-color:var(--theme-datepicker-day--background);border:1px solid var(--theme-datepicker-day--background);width:40px;height:40px;cursor:pointer}:host .grid .calendar-item.today{border:1px solid var(--theme-datepicker-today--border-color)}:host .grid .calendar-item.today:hover{background-color:var(--theme-datepicker-day--background--hover)}:host .grid .calendar-item.today:active{background-color:var(--theme-datepicker-day--background--active)}:host .grid .calendar-item.today.selected{box-shadow:inset 0 0 0 1px white}:host .grid .calendar-item.today.selected:hover{background-color:var(--theme-datepicker-day--background--selected-hover)}:host .grid .calendar-item.today.selected:active{background-color:var(--theme-datepicker-day--background--selected-active)}:host .grid .calendar-item.today.selected.disabled{pointer-events:none;background-color:var(--theme-datepicker-day--background--selected-disabled);border:1px solid var(--theme-datepicker-day--background--selected-disabled);color:var(--theme-datepicker-day--color--selected-disabled)}:host .grid .calendar-item.today.range{background-color:var(--theme-datepicker-day--background--range);color:var(--theme-datepicker-day--color--range);border:1px solid var(--theme-datepicker-today--border-color--range);box-shadow:inset 0 0 0 1px white}:host .grid .calendar-item.today.range:hover{background-color:var(--theme-datepicker-day--background--range-hover);border:1px solid var(--theme-datepicker-today--border-color--range-hover)}:host .grid .calendar-item.today.range:active{background-color:var(--theme-datepicker-day--background--range-active);border:1px solid var(--theme-datepicker-today--border-color--range-active)}:host .grid .calendar-item.today.range.disabled{background-color:var(--theme-datepicker-day--background--range-disabled);color:var(--theme-datepicker-day--color--range-disabled);border:1px solid var(--theme-datepicker-today--border-color--range-disabled)}:host .grid .calendar-item.today.disabled{pointer-events:none;background-color:var(--theme-datepicker-day--background--disabled);color:var(--theme-datepicker-day--color--disabled);cursor:default;pointer-events:none}:host .grid .calendar-item:hover{background-color:var(--theme-datepicker-day--background--hover)}:host .grid .calendar-item:active{background-color:var(--theme-datepicker-day--background--active)}:host .grid .calendar-item.selected{background-color:var(--theme-datepicker-day--background--selected);color:var(--theme-datepicker-day--color--selected);border:1px solid var(--theme-datepicker-day--background--selected)}:host .grid .calendar-item.selected:hover{background-color:var(--theme-datepicker-day--background--selected-hover)}:host .grid .calendar-item.selected:active{background-color:var(--theme-datepicker-day--background--selected-active)}:host .grid .calendar-item.selected.disabled{pointer-events:none;background-color:var(--theme-datepicker-day--background--selected-disabled);color:var(--theme-datepicker-day--color--selected-disabled)}:host .grid .calendar-item.range{background-color:var(--theme-datepicker-day--background--range);color:var(--theme-datepicker-day--color--range)}:host .grid .calendar-item.range:hover{background-color:var(--theme-datepicker-day--background--range-hover)}:host .grid .calendar-item.range:active{background-color:var(--theme-datepicker-day--background--range-active)}:host .grid .calendar-item.range.disabled{pointer-events:none;background-color:var(--theme-datepicker-day--background--range-disabled);color:var(--theme-datepicker-day--color--range-disabled)}:host .grid .calendar-item.disabled{pointer-events:none;background-color:var(--theme-datepicker-day--background--disabled);color:var(--theme-datepicker-day--color--disabled)}:host .grid .calendar-item.week-day{color:var(--theme-datepicker-weekday--color);font-size:12px;line-height:20px;border:none;background:none;cursor:initial}:host .grid .calendar-item.empty-day{border:none;background:none;cursor:initial}:host .grid .calendar-item.week-number{font-size:10px;line-height:14px;color:var(--theme-datepicker-ix--color);border:none;background:none;cursor:initial}:host .grid .calendar-item:focus-visible{background-color:var(--theme-datepicker-day--background--selected);border:inset 1px solid var(--theme-datepicker-day--border-color--selected);color:var(--theme-datepicker-day--color--selected);font-size:14px;line-height:20px;letter-spacing:0}:host .button{display:flex;justify-content:flex-end}:host .hidden{display:none}";
|
|
10
|
+
|
|
11
|
+
const DatePicker = /*@__PURE__*/ proxyCustomElement(class DatePicker extends HTMLElement {
|
|
12
|
+
constructor() {
|
|
13
|
+
super();
|
|
14
|
+
this.__registerHost();
|
|
15
|
+
this.__attachShadow();
|
|
16
|
+
this.dateChange = createEvent(this, "dateChange", 7);
|
|
17
|
+
this.dateRangeChange = createEvent(this, "dateRangeChange", 7);
|
|
18
|
+
this.done = createEvent(this, "done", 7);
|
|
19
|
+
this.dateSelect = createEvent(this, "dateSelect", 7);
|
|
20
|
+
this.daysInWeek = 7;
|
|
21
|
+
this.dayNames = luxon.Info.weekdays();
|
|
22
|
+
this.monthNames = luxon.Info.months();
|
|
23
|
+
this.format = 'yyyy/LL/dd';
|
|
24
|
+
this.range = true;
|
|
25
|
+
this.individual = true;
|
|
26
|
+
this.corners = 'rounded';
|
|
27
|
+
this.from = luxon.DateTime.now().toFormat(this.format);
|
|
28
|
+
this.to = null;
|
|
29
|
+
this.minDate = undefined;
|
|
30
|
+
this.maxDate = undefined;
|
|
31
|
+
this.eventDelimiter = ' - ';
|
|
32
|
+
this.textSelectDate = 'Done';
|
|
33
|
+
this.yearValue = this.year;
|
|
34
|
+
this.today = luxon.DateTime.now();
|
|
35
|
+
this.monthValue = this.month;
|
|
36
|
+
this.calendar = [];
|
|
37
|
+
this.years = [...Array(10).keys()].map((year) => year + this.year - 5);
|
|
38
|
+
this.tempYear = this.yearValue;
|
|
39
|
+
this.tempMonth = this.monthValue;
|
|
40
|
+
this.start = luxon.DateTime.fromObject({
|
|
41
|
+
year: this.year,
|
|
42
|
+
month: this.month,
|
|
43
|
+
day: this.day,
|
|
44
|
+
});
|
|
45
|
+
this.end = this.to
|
|
46
|
+
? luxon.DateTime.fromFormat(this.to, this.format)
|
|
47
|
+
: null;
|
|
48
|
+
this.dropdownButtonRef = undefined;
|
|
49
|
+
this.yearContainerRef = undefined;
|
|
50
|
+
}
|
|
51
|
+
get year() {
|
|
52
|
+
if (this.from !== null) {
|
|
53
|
+
return luxon.DateTime.fromFormat(this.from, this.format).year;
|
|
54
|
+
}
|
|
55
|
+
return luxon.DateTime.now().year;
|
|
56
|
+
}
|
|
57
|
+
get day() {
|
|
58
|
+
if (this.from !== null) {
|
|
59
|
+
return luxon.DateTime.fromFormat(this.from, this.format).day;
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
get month() {
|
|
64
|
+
if (this.from !== null) {
|
|
65
|
+
return luxon.DateTime.fromFormat(this.from, this.format).month;
|
|
66
|
+
}
|
|
67
|
+
return luxon.DateTime.now().month;
|
|
68
|
+
}
|
|
69
|
+
onDone() {
|
|
70
|
+
var _a, _b;
|
|
71
|
+
this.done.emit(this.getOutputFormat());
|
|
72
|
+
this.dateSelect.emit({
|
|
73
|
+
from: (_a = this.start) === null || _a === void 0 ? void 0 : _a.toFormat(this.format),
|
|
74
|
+
to: (_b = this.end) === null || _b === void 0 ? void 0 : _b.toFormat(this.format),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
onDateChange() {
|
|
78
|
+
var _a, _b;
|
|
79
|
+
const from = (_a = this.start) === null || _a === void 0 ? void 0 : _a.toFormat(this.format);
|
|
80
|
+
const to = (_b = this.end) === null || _b === void 0 ? void 0 : _b.toFormat(this.format);
|
|
81
|
+
this.from = from;
|
|
82
|
+
this.to = to;
|
|
83
|
+
if (this.eventDelimiter) {
|
|
84
|
+
this.dateChange.emit(this.getOutputFormat());
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
this.dateChange.emit({
|
|
88
|
+
from,
|
|
89
|
+
to,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
if (this.range) {
|
|
93
|
+
this.dateRangeChange.emit({
|
|
94
|
+
from,
|
|
95
|
+
to,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
getStartOfMonth(year = luxon.DateTime.local().get('year'), month = luxon.DateTime.local().get('month')) {
|
|
100
|
+
return luxon.DateTime.local(year, month).startOf('month');
|
|
101
|
+
}
|
|
102
|
+
getEndOfMonth(year = luxon.DateTime.local().get('year'), month = luxon.DateTime.local().get('month')) {
|
|
103
|
+
return luxon.DateTime.local(year, month).endOf('month');
|
|
104
|
+
}
|
|
105
|
+
getDaysInMonth(start = this.getStartOfMonth(), end = this.getEndOfMonth()) {
|
|
106
|
+
return Math.ceil(end.diff(start, 'days').days);
|
|
107
|
+
}
|
|
108
|
+
calculateCalendar() {
|
|
109
|
+
const start = this.getStartOfMonth(this.yearValue, this.monthValue);
|
|
110
|
+
const end = this.getEndOfMonth(this.yearValue, this.monthValue);
|
|
111
|
+
const totalDays = this.getDaysInMonth(start, end);
|
|
112
|
+
const totalWeeks = 6;
|
|
113
|
+
const totalDaysInWeeks = totalWeeks * this.daysInWeek;
|
|
114
|
+
const startWeekDay = start.weekday;
|
|
115
|
+
const prependDays = startWeekDay - 1;
|
|
116
|
+
const appendDays = totalDaysInWeeks - totalDays - prependDays;
|
|
117
|
+
let weekdays = [];
|
|
118
|
+
const calendar = [];
|
|
119
|
+
// create list of days
|
|
120
|
+
let days = [...new Array(totalDaysInWeeks).keys()].map((day) => day + 1);
|
|
121
|
+
// add start empty days
|
|
122
|
+
days.unshift(...new Array(prependDays));
|
|
123
|
+
// remove & add end days
|
|
124
|
+
days = days.slice(0, days.length - prependDays - appendDays);
|
|
125
|
+
days.push(...new Array(appendDays));
|
|
126
|
+
// make weeks
|
|
127
|
+
weekdays = days.reduce((result, item, index) => {
|
|
128
|
+
const weekIndex = Math.floor(index / this.daysInWeek);
|
|
129
|
+
if (!result[weekIndex])
|
|
130
|
+
result[weekIndex] = [];
|
|
131
|
+
result[weekIndex].push(item);
|
|
132
|
+
return result;
|
|
133
|
+
}, []);
|
|
134
|
+
for (let index = 1; index <= totalWeeks; index++) {
|
|
135
|
+
const week = weekdays[index - 1];
|
|
136
|
+
const firstWeekDay = week.find((day) => day !== undefined);
|
|
137
|
+
const weekNumber = firstWeekDay
|
|
138
|
+
? luxon.DateTime.local(this.yearValue, this.monthValue, weekdays[index - 1][0]).weekNumber
|
|
139
|
+
: undefined;
|
|
140
|
+
calendar.push([weekNumber, week]);
|
|
141
|
+
}
|
|
142
|
+
this.calendar = calendar;
|
|
143
|
+
}
|
|
144
|
+
changeMonth(number) {
|
|
145
|
+
if (this.monthValue + number < 1) {
|
|
146
|
+
this.yearValue--;
|
|
147
|
+
this.monthValue = 12;
|
|
148
|
+
}
|
|
149
|
+
else if (this.monthValue + number > 12) {
|
|
150
|
+
this.yearValue++;
|
|
151
|
+
this.monthValue = 1;
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
this.monthValue += number;
|
|
155
|
+
}
|
|
156
|
+
this.calculateCalendar();
|
|
157
|
+
}
|
|
158
|
+
selectMonth(month) {
|
|
159
|
+
this.monthValue = month;
|
|
160
|
+
this.yearValue = this.tempYear;
|
|
161
|
+
this.tempMonth = month;
|
|
162
|
+
}
|
|
163
|
+
infiniteScrollYears() {
|
|
164
|
+
const scroll = this.yearContainerRef.scrollTop;
|
|
165
|
+
const maxScroll = this.yearContainerRef.scrollHeight;
|
|
166
|
+
const atTop = scroll === 0;
|
|
167
|
+
const atBottom = scroll + this.yearContainerRef.getBoundingClientRect().height ===
|
|
168
|
+
maxScroll;
|
|
169
|
+
const limit = 200;
|
|
170
|
+
if (this.years.length > limit)
|
|
171
|
+
return;
|
|
172
|
+
if (atTop) {
|
|
173
|
+
this.years = [
|
|
174
|
+
...[...Array(5).keys()].map((year) => year + this.years[0] - 5),
|
|
175
|
+
...this.years,
|
|
176
|
+
];
|
|
177
|
+
this.yearContainerRef.scroll({ behavior: 'smooth', top: scroll + 100 });
|
|
178
|
+
}
|
|
179
|
+
if (atBottom) {
|
|
180
|
+
this.years = [
|
|
181
|
+
...this.years,
|
|
182
|
+
...[...Array(5).keys()].map((year) => year + this.years[this.years.length - 1]),
|
|
183
|
+
];
|
|
184
|
+
this.yearContainerRef.scroll({ behavior: 'smooth', top: scroll - 50 });
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
selectTempYear(event, year) {
|
|
188
|
+
event.stopPropagation();
|
|
189
|
+
this.tempYear = year;
|
|
190
|
+
}
|
|
191
|
+
getDayClasses(day) {
|
|
192
|
+
var _a, _b;
|
|
193
|
+
if (!day) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
const todayLocal = luxon.DateTime.local();
|
|
197
|
+
const dayLocal = luxon.DateTime.local(this.yearValue, this.monthValue, day);
|
|
198
|
+
const dayIso = dayLocal.toISO();
|
|
199
|
+
const startIso = (_a = this.start) === null || _a === void 0 ? void 0 : _a.toISO();
|
|
200
|
+
const endIso = (_b = this.end) === null || _b === void 0 ? void 0 : _b.toISO();
|
|
201
|
+
const isToday = Math.ceil(dayLocal.diff(todayLocal, 'days').days) === 0;
|
|
202
|
+
return {
|
|
203
|
+
'calendar-item': true,
|
|
204
|
+
'empty-day': day === undefined,
|
|
205
|
+
today: isToday,
|
|
206
|
+
selected: (this.start && dayIso === startIso) || (this.end && dayIso === endIso),
|
|
207
|
+
range: this.start && this.end && dayIso > startIso && dayIso < endIso,
|
|
208
|
+
disabled: !this.isWithinMinMax(dayLocal),
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
selectDay(day) {
|
|
212
|
+
const date = luxon.DateTime.local(this.yearValue, this.monthValue, day);
|
|
213
|
+
const isStartBeforeEnd = this.start && this.start.toISO() < date.toISO();
|
|
214
|
+
const isSameDay = this.start && !this.end && this.start.toISO() === date.toISO();
|
|
215
|
+
if (day === undefined)
|
|
216
|
+
return;
|
|
217
|
+
if (isSameDay) {
|
|
218
|
+
this.start = null;
|
|
219
|
+
this.onDateChange();
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
if (this.range) {
|
|
223
|
+
if (this.start === null) {
|
|
224
|
+
this.start = date;
|
|
225
|
+
}
|
|
226
|
+
else if (this.end === null) {
|
|
227
|
+
if (isStartBeforeEnd) {
|
|
228
|
+
this.end = date;
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
this.end = this.start;
|
|
232
|
+
this.start = date;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
this.start = date;
|
|
237
|
+
this.end = null;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
this.start = date;
|
|
242
|
+
}
|
|
243
|
+
this.onDateChange();
|
|
244
|
+
}
|
|
245
|
+
getOutputFormat() {
|
|
246
|
+
if (!this.start) {
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
if (!this.end) {
|
|
250
|
+
return this.start.toFormat(this.format);
|
|
251
|
+
}
|
|
252
|
+
return [
|
|
253
|
+
this.start.toFormat(this.format),
|
|
254
|
+
this.end.toFormat(this.format),
|
|
255
|
+
].join(this.eventDelimiter);
|
|
256
|
+
}
|
|
257
|
+
isWithinMinMax(date) {
|
|
258
|
+
const dateIso = date.toISO();
|
|
259
|
+
const _minDate = this.minDate
|
|
260
|
+
? luxon.DateTime.fromFormat(this.minDate, this.format)
|
|
261
|
+
: null;
|
|
262
|
+
const _maxDate = this.maxDate
|
|
263
|
+
? luxon.DateTime.fromFormat(this.maxDate, this.format)
|
|
264
|
+
: null;
|
|
265
|
+
return ((!_minDate || _minDate.toISO() <= dateIso) &&
|
|
266
|
+
(!_maxDate || _maxDate.toISO() >= dateIso));
|
|
267
|
+
}
|
|
268
|
+
componentWillLoad() {
|
|
269
|
+
if (this.from === null) {
|
|
270
|
+
this.start = null;
|
|
271
|
+
}
|
|
272
|
+
if (this.year !== null) {
|
|
273
|
+
this.yearValue = this.year;
|
|
274
|
+
}
|
|
275
|
+
if (this.month) {
|
|
276
|
+
this.monthValue = this.month;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
componentWillRender() {
|
|
280
|
+
this.calculateCalendar();
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Get the current DateTime
|
|
284
|
+
*/
|
|
285
|
+
async getCurrentDate() {
|
|
286
|
+
var _a, _b;
|
|
287
|
+
return {
|
|
288
|
+
start: (_a = this.start) === null || _a === void 0 ? void 0 : _a.toFormat(this.format),
|
|
289
|
+
end: (_b = this.end) === null || _b === void 0 ? void 0 : _b.toFormat(this.format),
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
render() {
|
|
293
|
+
return (h(Host, null, h("ix-date-time-card", { individual: this.individual, corners: this.corners }, h("div", { class: "header", slot: "header" }, h("ix-icon-button", { onClick: () => this.changeMonth(-1), ghost: true, icon: 'chevron-left', variant: "primary", class: "arrows" }), h("div", { class: "selector" }, h("ix-button", { ghost: true, ref: (ref) => (this.dropdownButtonRef = ref) }, h("span", { class: "fontSize capitalize" }, this.monthNames[this.monthValue - 1], " ", this.yearValue)), h("ix-dropdown", { class: "dropdown", trigger: this.dropdownButtonRef, placement: "bottom-start" }, h("div", { class: "wrapper" }, h("div", { class: "overflow", onScroll: () => this.infiniteScrollYears(), ref: (ref) => (this.yearContainerRef = ref) }, this.years.map((year) => (h("div", { key: year, class: { arrowYear: true }, onClick: (event) => this.selectTempYear(event, year) }, h("ix-icon", { class: {
|
|
294
|
+
hidden: this.tempYear !== year,
|
|
295
|
+
arrowPosition: true,
|
|
296
|
+
}, name: 'chevron-right', size: "12" }), h("div", { style: { 'min-width': 'max-content' } }, `${year}`))))), h("div", { class: "overflow" }, this.monthNames.map((month, index) => (h("div", { key: month, class: {
|
|
297
|
+
arrowYear: true,
|
|
298
|
+
selected: this.tempMonth - 1 === index,
|
|
299
|
+
}, onClick: () => this.selectMonth((index + 1)) }, h("ix-icon", { class: {
|
|
300
|
+
hidden: this.tempMonth - 1 !== index,
|
|
301
|
+
checkPosition: true,
|
|
302
|
+
}, name: 'single-check', size: "16" }), h("div", null, h("span", { class: { capitalize: true, monthMargin: true } }, `${month} ${this.tempYear}`))))))))), h("ix-icon-button", { onClick: () => this.changeMonth(1), ghost: true, icon: 'chevron-right', variant: "primary", class: "arrows" })), h("div", { class: "grid" }, h("div", { class: "calendar-item week-day" }), this.dayNames.map((name) => (h("div", { key: name, class: "calendar-item week-day" }, name.slice(0, 3)))), this.calendar.map((week) => {
|
|
303
|
+
return (h(Fragment, null, h("div", { class: "calendar-item week-number" }, week[0]), week[1].map((day) => (h("div", { key: day, class: this.getDayClasses(day), onClick: () => this.selectDay(day) }, day)))));
|
|
304
|
+
})), h("div", { class: { button: true, hidden: !this.individual || !this.range } }, h("ix-button", { onClick: () => this.onDone() }, this.textSelectDate)))));
|
|
305
|
+
}
|
|
306
|
+
static get style() { return datePickerCss; }
|
|
307
|
+
}, [1, "ix-date-picker", {
|
|
308
|
+
"format": [1],
|
|
309
|
+
"range": [4],
|
|
310
|
+
"individual": [4],
|
|
311
|
+
"corners": [1],
|
|
312
|
+
"from": [1],
|
|
313
|
+
"to": [1],
|
|
314
|
+
"minDate": [1, "min-date"],
|
|
315
|
+
"maxDate": [1, "max-date"],
|
|
316
|
+
"eventDelimiter": [1, "event-delimiter"],
|
|
317
|
+
"textSelectDate": [1, "text-select-date"],
|
|
318
|
+
"yearValue": [32],
|
|
319
|
+
"today": [32],
|
|
320
|
+
"monthValue": [32],
|
|
321
|
+
"calendar": [32],
|
|
322
|
+
"years": [32],
|
|
323
|
+
"tempYear": [32],
|
|
324
|
+
"tempMonth": [32],
|
|
325
|
+
"start": [32],
|
|
326
|
+
"end": [32],
|
|
327
|
+
"dropdownButtonRef": [32],
|
|
328
|
+
"yearContainerRef": [32],
|
|
329
|
+
"getCurrentDate": [64]
|
|
330
|
+
}]);
|
|
331
|
+
function defineCustomElement() {
|
|
332
|
+
if (typeof customElements === "undefined") {
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
const components = ["ix-date-picker", "ix-button", "ix-date-time-card", "ix-dropdown", "ix-icon-button", "ix-spinner"];
|
|
336
|
+
components.forEach(tagName => { switch (tagName) {
|
|
337
|
+
case "ix-date-picker":
|
|
338
|
+
if (!customElements.get(tagName)) {
|
|
339
|
+
customElements.define(tagName, DatePicker);
|
|
340
|
+
}
|
|
341
|
+
break;
|
|
342
|
+
case "ix-button":
|
|
343
|
+
if (!customElements.get(tagName)) {
|
|
344
|
+
defineCustomElement$5();
|
|
345
|
+
}
|
|
346
|
+
break;
|
|
347
|
+
case "ix-date-time-card":
|
|
348
|
+
if (!customElements.get(tagName)) {
|
|
349
|
+
defineCustomElement$4();
|
|
350
|
+
}
|
|
351
|
+
break;
|
|
352
|
+
case "ix-dropdown":
|
|
353
|
+
if (!customElements.get(tagName)) {
|
|
354
|
+
defineCustomElement$3();
|
|
355
|
+
}
|
|
356
|
+
break;
|
|
357
|
+
case "ix-icon-button":
|
|
358
|
+
if (!customElements.get(tagName)) {
|
|
359
|
+
defineCustomElement$2();
|
|
360
|
+
}
|
|
361
|
+
break;
|
|
362
|
+
case "ix-spinner":
|
|
363
|
+
if (!customElements.get(tagName)) {
|
|
364
|
+
defineCustomElement$1();
|
|
365
|
+
}
|
|
366
|
+
break;
|
|
367
|
+
} });
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
export { DatePicker as D, defineCustomElement as d };
|
|
371
|
+
|
|
372
|
+
//# sourceMappingURL=date-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"date-picker.js","mappings":"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","names":["Info","DateTime"],"sources":["./src/components/date-picker/date-picker.scss?tag=ix-date-picker&encapsulation=shadow","./src/components/date-picker/date-picker.tsx"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n@import 'common-variables';\n@import 'mixins/shadow-dom/component';\n\n:host {\n @include ix-component;\n display: block;\n position: relative;\n width: 22rem;\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .selector {\n flex-basis: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: $tiny-space $default-space;\n\n .dropdown {\n color: var(--theme-menu-item--color);\n font-size: 14px;\n line-height: 20px;\n }\n\n .fontSize {\n font-size: 16px;\n }\n\n .capitalize {\n text-transform: capitalize;\n }\n\n .arrowYear {\n display: flex;\n position: relative;\n padding: $medium-space $x-large-space;\n align-items: center;\n cursor: pointer;\n\n &:hover {\n background-color: var(--theme-select-list-item--background--hover);\n }\n\n &.selected {\n background-color: var(--theme-select-list-item--background--selected);\n }\n\n .arrowPosition {\n position: absolute;\n left: calc(($x-large-space / 2) - 6px);\n top: calc(50% - 6px);\n }\n\n .checkPosition {\n position: absolute;\n left: calc(($x-large-space / 2) - 6px);\n top: calc(50% - 8px);\n }\n\n .monthMargin {\n margin-left: 10px;\n }\n }\n }\n\n .wrapper {\n display: flex;\n\n .overflow {\n overflow-y: scroll;\n max-height: 250px;\n }\n }\n\n .grid {\n display: grid;\n grid-template-columns: repeat(8, 40px);\n grid-template-rows: repeat(7, 40px);\n align-items: center;\n justify-items: center;\n justify-content: center;\n color: var(--theme-datepicker-today--color);\n\n .calendar-item {\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: var(--theme-datepicker-day--background);\n border: 1px solid var(--theme-datepicker-day--background);\n width: 40px;\n height: 40px;\n cursor: pointer;\n\n &.today {\n border: 1px solid var(--theme-datepicker-today--border-color);\n\n &:hover {\n background-color: var(--theme-datepicker-day--background--hover);\n }\n\n &:active {\n background-color: var(--theme-datepicker-day--background--active);\n }\n\n &.selected {\n box-shadow: inset 0 0 0 1px white;\n\n &:hover {\n background-color: var(\n --theme-datepicker-day--background--selected-hover\n );\n }\n\n &:active {\n background-color: var(\n --theme-datepicker-day--background--selected-active\n );\n }\n\n &.disabled {\n pointer-events: none;\n background-color: var(\n --theme-datepicker-day--background--selected-disabled\n );\n border: 1px solid\n var(--theme-datepicker-day--background--selected-disabled);\n color: var(--theme-datepicker-day--color--selected-disabled);\n }\n }\n\n &.range {\n background-color: var(--theme-datepicker-day--background--range);\n color: var(--theme-datepicker-day--color--range);\n border: 1px solid var(--theme-datepicker-today--border-color--range);\n box-shadow: inset 0 0 0 1px white;\n\n &:hover {\n background-color: var(\n --theme-datepicker-day--background--range-hover\n );\n border: 1px solid\n var(--theme-datepicker-today--border-color--range-hover);\n }\n\n &:active {\n background-color: var(\n --theme-datepicker-day--background--range-active\n );\n border: 1px solid\n var(--theme-datepicker-today--border-color--range-active);\n }\n\n &.disabled {\n background-color: var(\n --theme-datepicker-day--background--range-disabled\n );\n color: var(--theme-datepicker-day--color--range-disabled);\n border: 1px solid\n var(--theme-datepicker-today--border-color--range-disabled);\n }\n }\n\n &.disabled {\n pointer-events: none;\n background-color: var(--theme-datepicker-day--background--disabled);\n color: var(--theme-datepicker-day--color--disabled);\n cursor: default;\n pointer-events: none;\n }\n }\n\n &:hover {\n background-color: var(--theme-datepicker-day--background--hover);\n }\n\n &:active {\n background-color: var(--theme-datepicker-day--background--active);\n }\n\n &.selected {\n background-color: var(--theme-datepicker-day--background--selected);\n color: var(--theme-datepicker-day--color--selected);\n border: 1px solid var(--theme-datepicker-day--background--selected);\n\n &:hover {\n background-color: var(\n --theme-datepicker-day--background--selected-hover\n );\n }\n\n &:active {\n background-color: var(\n --theme-datepicker-day--background--selected-active\n );\n }\n\n &.disabled {\n pointer-events: none;\n background-color: var(\n --theme-datepicker-day--background--selected-disabled\n );\n color: var(--theme-datepicker-day--color--selected-disabled);\n }\n }\n\n &.range {\n background-color: var(--theme-datepicker-day--background--range);\n color: var(--theme-datepicker-day--color--range);\n\n &:hover {\n background-color: var(\n --theme-datepicker-day--background--range-hover\n );\n }\n\n &:active {\n background-color: var(\n --theme-datepicker-day--background--range-active\n );\n }\n\n &.disabled {\n pointer-events: none;\n background-color: var(\n --theme-datepicker-day--background--range-disabled\n );\n color: var(--theme-datepicker-day--color--range-disabled);\n }\n }\n\n &.disabled {\n pointer-events: none;\n background-color: var(--theme-datepicker-day--background--disabled);\n color: var(--theme-datepicker-day--color--disabled);\n }\n\n &.week-day {\n color: var(--theme-datepicker-weekday--color);\n font-size: 12px;\n line-height: 20px;\n border: none;\n background: none;\n cursor: initial;\n }\n\n &.empty-day {\n border: none;\n background: none;\n cursor: initial;\n }\n\n &.week-number {\n font-size: 10px;\n line-height: 14px;\n color: var(--theme-datepicker-ix--color);\n border: none;\n background: none;\n cursor: initial;\n }\n\n &:focus-visible {\n background-color: var(--theme-datepicker-day--background--selected);\n border: inset 1px solid\n var(--theme-datepicker-day--border-color--selected);\n color: var(--theme-datepicker-day--color--selected);\n font-size: 14px;\n line-height: 20px;\n letter-spacing: 0;\n }\n }\n }\n\n .button {\n display: flex;\n justify-content: flex-end;\n }\n\n .hidden {\n display: none;\n }\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Component,\n Event,\n EventEmitter,\n Fragment,\n h,\n Host,\n Method,\n Prop,\n State,\n} from '@stencil/core';\nimport { DateTime, Info, MonthNumbers } from 'luxon';\nimport { DateTimeCardCorners } from '../date-time-card/date-time-card';\n\nexport type DateChangeEvent = {\n from: string;\n to: string;\n};\n\nexport type LegacyDateChangeEvent = DateChangeEvent | string;\n\nexport type DateTimeCorners = DateTimeCardCorners;\n\n@Component({\n tag: 'ix-date-picker',\n styleUrl: './date-picker.scss',\n shadow: true,\n})\nexport class DatePicker {\n private daysInWeek = 7;\n private dayNames = Info.weekdays();\n private monthNames = Info.months();\n\n /**\n * Date format string.\n * See @link https://moment.github.io/luxon/#/formatting?id=table-of-tokens for all available tokens.\n */\n @Prop() format: string = 'yyyy/LL/dd';\n\n /**\n * If true a range of dates can be selected.\n */\n @Prop() range: boolean = true;\n\n /**\n * @deprecated Will be removed in 2.0.0\n */\n @Prop() individual: boolean = true;\n\n /**\n * Corner style\n */\n @Prop() corners: DateTimeCardCorners = 'rounded';\n\n /**\n * Picker date. If the picker is in range mode this property is the start date.\n * If set to `null` no default start date will be pre-selected.\n *\n * Format is based on `format`\n *\n * @since 1.1.0\n */\n @Prop() from: string | null = DateTime.now().toFormat(this.format);\n\n /**\n * Picker date. If the picker is in range mode this property is the end date.\n * If the picker is not in range mode leave this value `null`\n *\n * Format is based on `format`\n *\n * @since 1.1.0\n */\n @Prop() to: string | null = null;\n\n /**\n * The earliest date that can be selected by the date picker.\n * If not set there will be no restriction.\n *\n * @since 1.1.0\n */\n @Prop() minDate: string;\n\n /**\n * The latest date that can be selected by the date picker.\n * If not set there will be no restriction.\n *\n * @since 1.1.0\n */\n @Prop() maxDate: string;\n\n /**\n * Default behavior of the done event is to join the two events (date and time) into one combined string output.\n * This combination can be configured over the delimiter\n *\n * @since 1.1.0\n */\n @Prop() eventDelimiter = ' - ';\n\n /**\n * Text of date select button\n *\n * @since 1.1.0\n */\n @Prop() textSelectDate = 'Done';\n\n @State() yearValue = this.year;\n @State() today = DateTime.now();\n @State() monthValue: number = this.month;\n @State() calendar: [number, number[]][] = [];\n\n @State() years = [...Array(10).keys()].map((year) => year + this.year - 5);\n @State() tempYear: number = this.yearValue;\n @State() tempMonth: number = this.monthValue;\n @State() start: DateTime = DateTime.fromObject({\n year: this.year,\n month: this.month,\n day: this.day,\n });\n\n @State() end: DateTime = this.to\n ? DateTime.fromFormat(this.to, this.format)\n : null;\n\n @State() dropdownButtonRef: HTMLElement;\n @State() yearContainerRef: HTMLElement;\n\n /**\n * Date change event\n *\n * If datepicker is in range mode the event detail will be sperated with a `-` e.g.\n * `2022/10/22 - 2022/10/24` (start and end). If range mode is chosen consider to use `dateRangeChange`.\n *\n * @deprecated String output will be removed. Set ´doneEventDelimiter´ to undefined or null to get date change object instead of a string\n */\n @Event() dateChange: EventEmitter<LegacyDateChangeEvent>;\n\n /**\n * Date range change.\n * Only triggered if datepicker is in range mode\n *\n * @since 1.1.0\n */\n @Event() dateRangeChange: EventEmitter<DateChangeEvent>;\n\n /**\n * Date selection confirmed via button action\n *\n * @deprecated Will be removed in 2.0.0. Use `dateSelect`\n */\n @Event() done: EventEmitter<string>;\n\n /**\n * Date selection confirmed via button action\n *\n * @since 1.1.0\n */\n @Event() dateSelect: EventEmitter<DateChangeEvent>;\n\n get year() {\n if (this.from !== null) {\n return DateTime.fromFormat(this.from, this.format).year;\n }\n\n return DateTime.now().year;\n }\n\n get day() {\n if (this.from !== null) {\n return DateTime.fromFormat(this.from, this.format).day;\n }\n\n return null;\n }\n\n get month() {\n if (this.from !== null) {\n return DateTime.fromFormat(this.from, this.format).month;\n }\n\n return DateTime.now().month;\n }\n\n private onDone() {\n this.done.emit(this.getOutputFormat());\n\n this.dateSelect.emit({\n from: this.start?.toFormat(this.format),\n to: this.end?.toFormat(this.format),\n });\n }\n\n private onDateChange() {\n const from = this.start?.toFormat(this.format);\n const to = this.end?.toFormat(this.format);\n\n this.from = from;\n this.to = to;\n\n if (this.eventDelimiter) {\n this.dateChange.emit(this.getOutputFormat());\n } else {\n this.dateChange.emit({\n from,\n to,\n });\n }\n\n if (this.range) {\n this.dateRangeChange.emit({\n from,\n to,\n });\n }\n }\n\n private getStartOfMonth(\n year = DateTime.local().get('year'),\n month = DateTime.local().get('month')\n ) {\n return DateTime.local(year, month).startOf('month');\n }\n\n private getEndOfMonth(\n year = DateTime.local().get('year'),\n month = DateTime.local().get('month')\n ) {\n return DateTime.local(year, month).endOf('month');\n }\n\n private getDaysInMonth(\n start = this.getStartOfMonth(),\n end = this.getEndOfMonth()\n ) {\n return Math.ceil(end.diff(start, 'days').days);\n }\n\n private calculateCalendar() {\n const start = this.getStartOfMonth(this.yearValue, this.monthValue);\n const end = this.getEndOfMonth(this.yearValue, this.monthValue);\n const totalDays = this.getDaysInMonth(start, end);\n const totalWeeks = 6;\n const totalDaysInWeeks = totalWeeks * this.daysInWeek;\n const startWeekDay = start.weekday;\n const prependDays = startWeekDay - 1;\n const appendDays = totalDaysInWeeks - totalDays - prependDays;\n let weekdays: number[][] = [];\n const calendar: [number, number[]][] = [];\n\n // create list of days\n let days = [...new Array(totalDaysInWeeks).keys()].map((day) => day + 1);\n\n // add start empty days\n days.unshift(...new Array(prependDays));\n\n // remove & add end days\n days = days.slice(0, days.length - prependDays - appendDays);\n days.push(...new Array(appendDays));\n\n // make weeks\n weekdays = days.reduce((result, item, index) => {\n const weekIndex = Math.floor(index / this.daysInWeek);\n\n if (!result[weekIndex]) result[weekIndex] = [];\n\n result[weekIndex].push(item);\n\n return result;\n }, []);\n\n for (let index = 1; index <= totalWeeks; index++) {\n const week = weekdays[index - 1];\n const firstWeekDay = week.find((day) => day !== undefined);\n const weekNumber = firstWeekDay\n ? DateTime.local(\n this.yearValue,\n this.monthValue,\n weekdays[index - 1][0]\n ).weekNumber\n : undefined;\n calendar.push([weekNumber, week]);\n }\n\n this.calendar = calendar;\n }\n\n private changeMonth(number) {\n if (this.monthValue + number < 1) {\n this.yearValue--;\n this.monthValue = 12;\n } else if (this.monthValue + number > 12) {\n this.yearValue++;\n this.monthValue = 1;\n } else {\n this.monthValue += number;\n }\n this.calculateCalendar();\n }\n\n private selectMonth(month: MonthNumbers) {\n this.monthValue = month;\n this.yearValue = this.tempYear;\n this.tempMonth = month;\n }\n\n private infiniteScrollYears() {\n const scroll = this.yearContainerRef.scrollTop;\n const maxScroll = this.yearContainerRef.scrollHeight;\n const atTop = scroll === 0;\n const atBottom =\n scroll + this.yearContainerRef.getBoundingClientRect().height ===\n maxScroll;\n const limit = 200;\n\n if (this.years.length > limit) return;\n\n if (atTop) {\n this.years = [\n ...[...Array(5).keys()].map((year) => year + this.years[0] - 5),\n ...this.years,\n ];\n this.yearContainerRef.scroll({ behavior: 'smooth', top: scroll + 100 });\n }\n\n if (atBottom) {\n this.years = [\n ...this.years,\n ...[...Array(5).keys()].map(\n (year) => year + this.years[this.years.length - 1]\n ),\n ];\n this.yearContainerRef.scroll({ behavior: 'smooth', top: scroll - 50 });\n }\n }\n\n private selectTempYear(event: MouseEvent, year: number) {\n event.stopPropagation();\n this.tempYear = year;\n }\n\n private getDayClasses(day: number) {\n if (!day) {\n return;\n }\n\n const todayLocal = DateTime.local();\n const dayLocal = DateTime.local(this.yearValue, this.monthValue, day);\n const dayIso = dayLocal.toISO();\n const startIso = this.start?.toISO();\n const endIso = this.end?.toISO();\n const isToday = Math.ceil(dayLocal.diff(todayLocal, 'days').days) === 0;\n\n return {\n 'calendar-item': true,\n 'empty-day': day === undefined,\n today: isToday,\n selected:\n (this.start && dayIso === startIso) || (this.end && dayIso === endIso),\n range: this.start && this.end && dayIso > startIso && dayIso < endIso,\n disabled: !this.isWithinMinMax(dayLocal),\n };\n }\n\n private selectDay(day: number) {\n const date = DateTime.local(this.yearValue, this.monthValue, day);\n const isStartBeforeEnd = this.start && this.start.toISO() < date.toISO();\n const isSameDay =\n this.start && !this.end && this.start.toISO() === date.toISO();\n\n if (day === undefined) return;\n\n if (isSameDay) {\n this.start = null;\n this.onDateChange();\n return;\n }\n\n if (this.range) {\n if (this.start === null) {\n this.start = date;\n } else if (this.end === null) {\n if (isStartBeforeEnd) {\n this.end = date;\n } else {\n this.end = this.start;\n this.start = date;\n }\n } else {\n this.start = date;\n this.end = null;\n }\n } else {\n this.start = date;\n }\n\n this.onDateChange();\n }\n\n private getOutputFormat() {\n if (!this.start) {\n return null;\n }\n\n if (!this.end) {\n return this.start.toFormat(this.format);\n }\n\n return [\n this.start.toFormat(this.format),\n this.end.toFormat(this.format),\n ].join(this.eventDelimiter);\n }\n\n private isWithinMinMax(date: DateTime) {\n const dateIso = date.toISO();\n const _minDate = this.minDate\n ? DateTime.fromFormat(this.minDate, this.format)\n : null;\n const _maxDate = this.maxDate\n ? DateTime.fromFormat(this.maxDate, this.format)\n : null;\n return (\n (!_minDate || _minDate.toISO() <= dateIso) &&\n (!_maxDate || _maxDate.toISO() >= dateIso)\n );\n }\n\n componentWillLoad() {\n if (this.from === null) {\n this.start = null;\n }\n\n if (this.year !== null) {\n this.yearValue = this.year;\n }\n if (this.month) {\n this.monthValue = this.month;\n }\n }\n\n componentWillRender() {\n this.calculateCalendar();\n }\n\n /**\n * Get the current DateTime\n */\n @Method()\n async getCurrentDate() {\n return {\n start: this.start?.toFormat(this.format),\n end: this.end?.toFormat(this.format),\n };\n }\n\n render() {\n return (\n <Host>\n <ix-date-time-card individual={this.individual} corners={this.corners}>\n <div class=\"header\" slot=\"header\">\n <ix-icon-button\n onClick={() => this.changeMonth(-1)}\n ghost\n icon={'chevron-left'}\n variant=\"primary\"\n class=\"arrows\"\n ></ix-icon-button>\n\n <div class=\"selector\">\n <ix-button ghost ref={(ref) => (this.dropdownButtonRef = ref)}>\n <span class=\"fontSize capitalize\">\n {this.monthNames[this.monthValue - 1]} {this.yearValue}\n </span>\n </ix-button>\n <ix-dropdown\n class=\"dropdown\"\n trigger={this.dropdownButtonRef}\n placement=\"bottom-start\"\n >\n <div class=\"wrapper\">\n <div\n class=\"overflow\"\n onScroll={() => this.infiniteScrollYears()}\n ref={(ref) => (this.yearContainerRef = ref)}\n >\n {this.years.map((year) => (\n <div\n key={year}\n class={{ arrowYear: true }}\n onClick={(event) => this.selectTempYear(event, year)}\n >\n <ix-icon\n class={{\n hidden: this.tempYear !== year,\n arrowPosition: true,\n }}\n name={'chevron-right'}\n size=\"12\"\n ></ix-icon>\n <div\n style={{ 'min-width': 'max-content' }}\n >{`${year}`}</div>\n </div>\n ))}\n </div>\n <div class=\"overflow\">\n {this.monthNames.map((month, index) => (\n <div\n key={month}\n class={{\n arrowYear: true,\n selected: this.tempMonth - 1 === index,\n }}\n onClick={() =>\n this.selectMonth((index + 1) as MonthNumbers)\n }\n >\n <ix-icon\n class={{\n hidden: this.tempMonth - 1 !== index,\n checkPosition: true,\n }}\n name={'single-check'}\n size=\"16\"\n ></ix-icon>\n <div>\n <span\n class={{ capitalize: true, monthMargin: true }}\n >{`${month} ${this.tempYear}`}</span>\n </div>\n </div>\n ))}\n </div>\n </div>\n </ix-dropdown>\n </div>\n\n <ix-icon-button\n onClick={() => this.changeMonth(1)}\n ghost\n icon={'chevron-right'}\n variant=\"primary\"\n class=\"arrows\"\n ></ix-icon-button>\n </div>\n\n <div class=\"grid\">\n <div class=\"calendar-item week-day\"></div>\n {this.dayNames.map((name) => (\n <div key={name} class=\"calendar-item week-day\">\n {name.slice(0, 3)}\n </div>\n ))}\n\n {this.calendar.map((week) => {\n return (\n <Fragment>\n <div class=\"calendar-item week-number\">{week[0]}</div>\n {week[1].map((day) => (\n <div\n key={day}\n class={this.getDayClasses(day)}\n onClick={() => this.selectDay(day)}\n >\n {day}\n </div>\n ))}\n </Fragment>\n );\n })}\n </div>\n\n <div\n class={{ button: true, hidden: !this.individual || !this.range }}\n >\n <ix-button onClick={() => this.onDone()}>\n {this.textSelectDate}\n </ix-button>\n </div>\n </ix-date-time-card>\n </Host>\n );\n }\n}\n"],"version":3}
|