@govtechsg/sgds-web-component 3.2.0-rc.0 → 3.2.0-rc.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/base/button.js +1 -1
- package/base/card-element.d.ts +14 -0
- package/base/card-element.js +53 -2
- package/base/card-element.js.map +1 -1
- package/base/card.js +1 -1
- package/components/Badge/index.umd.js +63 -44
- package/components/Badge/index.umd.js.map +1 -1
- package/components/Badge/sgds-badge.d.ts +3 -1
- package/components/Badge/sgds-badge.js +23 -4
- package/components/Badge/sgds-badge.js.map +1 -1
- package/components/Breadcrumb/index.umd.js +2 -2
- package/components/Breadcrumb/index.umd.js.map +1 -1
- package/components/Breadcrumb/sgds-breadcrumb.d.ts +1 -1
- package/components/Breadcrumb/sgds-breadcrumb.js +1 -1
- package/components/Breadcrumb/sgds-breadcrumb.js.map +1 -1
- package/components/Button/index.umd.js +1 -1
- package/components/Card/card.js +1 -1
- package/components/Card/index.umd.js +121 -69
- package/components/Card/index.umd.js.map +1 -1
- package/components/Card/sgds-card.d.ts +4 -15
- package/components/Card/sgds-card.js +16 -54
- package/components/Card/sgds-card.js.map +1 -1
- package/components/Card/types.d.ts +3 -0
- package/components/ComboBox/combo-box-item2.js +1 -1
- package/components/ComboBox/index.umd.js +30 -10
- package/components/ComboBox/index.umd.js.map +1 -1
- package/components/ComboBox/sgds-combo-box.js +3 -2
- package/components/ComboBox/sgds-combo-box.js.map +1 -1
- package/components/Datepicker/index.umd.js +30 -13
- package/components/Datepicker/index.umd.js.map +1 -1
- package/components/Datepicker/sgds-datepicker.d.ts +13 -3
- package/components/Datepicker/sgds-datepicker.js +29 -11
- package/components/Datepicker/sgds-datepicker.js.map +1 -1
- package/components/Drawer/index.umd.js +2 -2
- package/components/Drawer/index.umd.js.map +1 -1
- package/components/Dropdown/dropdown-item.js +1 -1
- package/components/Dropdown/dropdown.js +1 -1
- package/components/Dropdown/index.umd.js +2 -2
- package/components/FileUpload/index.umd.js +1 -1
- package/components/IconButton/index.umd.js +1 -1
- package/components/IconCard/icon-card.js +6 -0
- package/components/IconCard/icon-card.js.map +1 -0
- package/components/IconCard/index.d.ts +6 -0
- package/components/IconCard/index.js +4 -0
- package/components/IconCard/index.js.map +1 -0
- package/components/IconCard/index.umd.js +4760 -0
- package/components/IconCard/index.umd.js.map +1 -0
- package/components/IconCard/sgds-icon-card.d.ts +24 -0
- package/components/IconCard/sgds-icon-card.js +83 -0
- package/components/IconCard/sgds-icon-card.js.map +1 -0
- package/components/IconList/icon-list.js +1 -1
- package/components/IconList/index.umd.js +1 -1
- package/components/ImageCard/image-card.js +6 -0
- package/components/ImageCard/image-card.js.map +1 -0
- package/components/ImageCard/index.d.ts +6 -0
- package/components/ImageCard/index.js +4 -0
- package/components/ImageCard/index.js.map +1 -0
- package/components/ImageCard/index.umd.js +4774 -0
- package/components/ImageCard/index.umd.js.map +1 -0
- package/components/ImageCard/sgds-image-card.d.ts +30 -0
- package/components/ImageCard/sgds-image-card.js +97 -0
- package/components/ImageCard/sgds-image-card.js.map +1 -0
- package/components/Input/index.umd.js +1 -1
- package/components/Input/input.js +1 -1
- package/components/Mainnav/index.umd.js +5 -5
- package/components/Mainnav/index.umd.js.map +1 -1
- package/components/Mainnav/sgds-mainnav-item.d.ts +1 -1
- package/components/Mainnav/sgds-mainnav-item.js +2 -2
- package/components/Mainnav/sgds-mainnav-item.js.map +1 -1
- package/components/Modal/index.umd.js +22 -17
- package/components/Modal/index.umd.js.map +1 -1
- package/components/Modal/modal.js +1 -1
- package/components/Modal/sgds-modal.js +17 -14
- package/components/Modal/sgds-modal.js.map +1 -1
- package/components/OverflowMenu/index.js +5 -0
- package/components/OverflowMenu/index.js.map +1 -0
- package/components/OverflowMenu/index.umd.js +11129 -0
- package/components/OverflowMenu/index.umd.js.map +1 -0
- package/{internals → components}/OverflowMenu/sgds-overflow-menu.d.ts +3 -3
- package/{internals → components}/OverflowMenu/sgds-overflow-menu.js +3 -3
- package/components/OverflowMenu/sgds-overflow-menu.js.map +1 -0
- package/components/Pagination/index.umd.js +1 -1
- package/components/QuantityToggle/index.umd.js +2 -2
- package/components/Select/index.umd.js +1 -1
- package/components/Select/select-item2.js +1 -1
- package/components/Subnav/index.umd.js +79 -87
- package/components/Subnav/index.umd.js.map +1 -1
- package/components/Subnav/sgds-subnav-item.d.ts +1 -1
- package/components/Subnav/sgds-subnav-item.js +2 -2
- package/components/Subnav/sgds-subnav-item.js.map +1 -1
- package/components/Subnav/sgds-subnav.d.ts +5 -4
- package/components/Subnav/sgds-subnav.js +76 -85
- package/components/Subnav/sgds-subnav.js.map +1 -1
- package/components/Subnav/subnav-item.js +1 -1
- package/components/Subnav/subnav.js +1 -1
- package/components/Table/index.d.ts +7 -1
- package/components/Table/index.js +6 -0
- package/components/Table/index.js.map +1 -1
- package/components/Table/index.umd.js +182 -16
- package/components/Table/index.umd.js.map +1 -1
- package/components/Table/sgds-table-cell.d.ts +13 -0
- package/components/Table/sgds-table-cell.js +22 -0
- package/components/Table/sgds-table-cell.js.map +1 -0
- package/components/Table/sgds-table-head.d.ts +18 -0
- package/components/Table/sgds-table-head.js +43 -0
- package/components/Table/sgds-table-head.js.map +1 -0
- package/components/Table/sgds-table-row.d.ts +13 -0
- package/components/Table/sgds-table-row.js +22 -0
- package/components/Table/sgds-table-row.js.map +1 -0
- package/components/Table/sgds-table.d.ts +5 -2
- package/components/Table/sgds-table.js +18 -13
- package/components/Table/sgds-table.js.map +1 -1
- package/components/Table/table-cell.js +6 -0
- package/components/Table/table-cell.js.map +1 -0
- package/components/Table/table-head.js +6 -0
- package/components/Table/table-head.js.map +1 -0
- package/components/Table/table-row.js +6 -0
- package/components/Table/table-row.js.map +1 -0
- package/components/Table/table.js +1 -1
- package/components/ThumbnailCard/index.d.ts +6 -0
- package/components/ThumbnailCard/index.js +4 -0
- package/components/ThumbnailCard/index.js.map +1 -0
- package/components/ThumbnailCard/index.umd.js +4764 -0
- package/components/ThumbnailCard/index.umd.js.map +1 -0
- package/components/ThumbnailCard/sgds-thumbnail-card.d.ts +24 -0
- package/components/ThumbnailCard/sgds-thumbnail-card.js +87 -0
- package/components/ThumbnailCard/sgds-thumbnail-card.js.map +1 -0
- package/components/ThumbnailCard/thumbnail-card.js +6 -0
- package/components/ThumbnailCard/thumbnail-card.js.map +1 -0
- package/components/Toast/index.umd.js +1 -1
- package/components/Toast/toast.js +1 -1
- package/components/index.d.ts +4 -0
- package/components/index.js +4 -0
- package/components/index.js.map +1 -1
- package/components/index.umd.js +615 -322
- package/components/index.umd.js.map +1 -1
- package/index.d.ts +4 -0
- package/index.js +4 -0
- package/index.js.map +1 -1
- package/index.umd.js +703 -331
- package/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/react/badge/index.cjs.js +3 -1
- package/react/badge/index.cjs.js.map +1 -1
- package/react/badge/index.js +3 -1
- package/react/badge/index.js.map +1 -1
- package/react/base/button.cjs.js +1 -1
- package/react/base/button.js +1 -1
- package/react/base/card-element.cjs.js +52 -1
- package/react/base/card-element.cjs.js.map +1 -1
- package/react/base/card-element.js +53 -2
- package/react/base/card-element.js.map +1 -1
- package/react/base/card.cjs.js +1 -1
- package/react/base/card.js +1 -1
- package/react/components/Badge/sgds-badge.cjs.js +23 -4
- package/react/components/Badge/sgds-badge.cjs.js.map +1 -1
- package/react/components/Badge/sgds-badge.js +23 -4
- package/react/components/Badge/sgds-badge.js.map +1 -1
- package/react/components/Breadcrumb/sgds-breadcrumb.cjs.js +1 -1
- package/react/components/Breadcrumb/sgds-breadcrumb.cjs.js.map +1 -1
- package/react/components/Breadcrumb/sgds-breadcrumb.js +1 -1
- package/react/components/Breadcrumb/sgds-breadcrumb.js.map +1 -1
- package/react/components/Card/card.cjs.js +1 -1
- package/react/components/Card/card.js +1 -1
- package/react/components/Card/sgds-card.cjs.js +15 -53
- package/react/components/Card/sgds-card.cjs.js.map +1 -1
- package/react/components/Card/sgds-card.js +16 -54
- package/react/components/Card/sgds-card.js.map +1 -1
- package/react/components/ComboBox/combo-box-item.cjs2.js +1 -1
- package/react/components/ComboBox/combo-box-item2.js +1 -1
- package/react/components/ComboBox/sgds-combo-box.cjs.js +3 -2
- package/react/components/ComboBox/sgds-combo-box.cjs.js.map +1 -1
- package/react/components/ComboBox/sgds-combo-box.js +3 -2
- package/react/components/ComboBox/sgds-combo-box.js.map +1 -1
- package/react/components/Datepicker/sgds-datepicker.cjs.js +29 -11
- package/react/components/Datepicker/sgds-datepicker.cjs.js.map +1 -1
- package/react/components/Datepicker/sgds-datepicker.js +29 -11
- package/react/components/Datepicker/sgds-datepicker.js.map +1 -1
- package/react/components/Dropdown/dropdown-item.cjs.js +1 -1
- package/react/components/Dropdown/dropdown-item.js +1 -1
- package/react/components/Dropdown/dropdown.cjs.js +1 -1
- package/react/components/Dropdown/dropdown.js +1 -1
- package/react/components/IconCard/icon-card.cjs.js +11 -0
- package/react/components/IconCard/icon-card.cjs.js.map +1 -0
- package/react/components/IconCard/icon-card.js +7 -0
- package/react/components/IconCard/icon-card.js.map +1 -0
- package/react/components/IconCard/sgds-icon-card.cjs.js +89 -0
- package/react/components/IconCard/sgds-icon-card.cjs.js.map +1 -0
- package/react/components/IconCard/sgds-icon-card.js +84 -0
- package/react/components/IconCard/sgds-icon-card.js.map +1 -0
- package/react/components/IconList/icon-list.cjs.js +1 -1
- package/react/components/IconList/icon-list.js +1 -1
- package/react/components/ImageCard/image-card.cjs.js +11 -0
- package/react/components/ImageCard/image-card.cjs.js.map +1 -0
- package/react/components/ImageCard/image-card.js +7 -0
- package/react/components/ImageCard/image-card.js.map +1 -0
- package/react/components/ImageCard/sgds-image-card.cjs.js +103 -0
- package/react/components/ImageCard/sgds-image-card.cjs.js.map +1 -0
- package/react/components/ImageCard/sgds-image-card.js +98 -0
- package/react/components/ImageCard/sgds-image-card.js.map +1 -0
- package/react/components/Input/input.cjs.js +1 -1
- package/react/components/Input/input.js +1 -1
- package/react/components/Mainnav/sgds-mainnav-item.cjs.js +2 -2
- package/react/components/Mainnav/sgds-mainnav-item.cjs.js.map +1 -1
- package/react/components/Mainnav/sgds-mainnav-item.js +2 -2
- package/react/components/Mainnav/sgds-mainnav-item.js.map +1 -1
- package/react/components/Modal/modal.cjs.js +1 -1
- package/react/components/Modal/modal.js +1 -1
- package/react/components/Modal/sgds-modal.cjs.js +17 -14
- package/react/components/Modal/sgds-modal.cjs.js.map +1 -1
- package/react/components/Modal/sgds-modal.js +17 -14
- package/react/components/Modal/sgds-modal.js.map +1 -1
- package/react/{internals → components}/OverflowMenu/sgds-overflow-menu.cjs.js +3 -3
- package/react/components/OverflowMenu/sgds-overflow-menu.cjs.js.map +1 -0
- package/react/{internals → components}/OverflowMenu/sgds-overflow-menu.js +3 -3
- package/react/components/OverflowMenu/sgds-overflow-menu.js.map +1 -0
- package/react/components/Select/select-item.cjs2.js +1 -1
- package/react/components/Select/select-item2.js +1 -1
- package/react/components/Subnav/sgds-subnav-item.cjs.js +2 -2
- package/react/components/Subnav/sgds-subnav-item.cjs.js.map +1 -1
- package/react/components/Subnav/sgds-subnav-item.js +2 -2
- package/react/components/Subnav/sgds-subnav-item.js.map +1 -1
- package/react/components/Subnav/sgds-subnav.cjs.js +74 -83
- package/react/components/Subnav/sgds-subnav.cjs.js.map +1 -1
- package/react/components/Subnav/sgds-subnav.js +76 -85
- package/react/components/Subnav/sgds-subnav.js.map +1 -1
- package/react/components/Subnav/subnav-item.cjs.js +1 -1
- package/react/components/Subnav/subnav-item.js +1 -1
- package/react/components/Subnav/subnav.cjs.js +1 -1
- package/react/components/Subnav/subnav.js +1 -1
- package/react/components/Table/sgds-table-cell.cjs.js +28 -0
- package/react/components/Table/sgds-table-cell.cjs.js.map +1 -0
- package/react/components/Table/sgds-table-cell.js +23 -0
- package/react/components/Table/sgds-table-cell.js.map +1 -0
- package/react/components/Table/sgds-table-head.cjs.js +49 -0
- package/react/components/Table/sgds-table-head.cjs.js.map +1 -0
- package/react/components/Table/sgds-table-head.js +44 -0
- package/react/components/Table/sgds-table-head.js.map +1 -0
- package/react/components/Table/sgds-table-row.cjs.js +28 -0
- package/react/components/Table/sgds-table-row.cjs.js.map +1 -0
- package/react/components/Table/sgds-table-row.js +23 -0
- package/react/components/Table/sgds-table-row.js.map +1 -0
- package/react/components/Table/sgds-table.cjs.js +17 -12
- package/react/components/Table/sgds-table.cjs.js.map +1 -1
- package/react/components/Table/sgds-table.js +18 -13
- package/react/components/Table/sgds-table.js.map +1 -1
- package/react/components/Table/table-cell.cjs.js +11 -0
- package/react/components/Table/table-cell.cjs.js.map +1 -0
- package/react/components/Table/table-cell.js +7 -0
- package/react/components/Table/table-cell.js.map +1 -0
- package/react/components/Table/table-head.cjs.js +11 -0
- package/react/components/Table/table-head.cjs.js.map +1 -0
- package/react/components/Table/table-head.js +7 -0
- package/react/components/Table/table-head.js.map +1 -0
- package/react/components/Table/table-row.cjs.js +11 -0
- package/react/components/Table/table-row.cjs.js.map +1 -0
- package/react/components/Table/table-row.js +7 -0
- package/react/components/Table/table-row.js.map +1 -0
- package/react/components/Table/table.cjs.js +1 -1
- package/react/components/Table/table.js +1 -1
- package/react/components/ThumbnailCard/sgds-thumbnail-card.cjs.js +93 -0
- package/react/components/ThumbnailCard/sgds-thumbnail-card.cjs.js.map +1 -0
- package/react/components/ThumbnailCard/sgds-thumbnail-card.js +88 -0
- package/react/components/ThumbnailCard/sgds-thumbnail-card.js.map +1 -0
- package/react/components/ThumbnailCard/thumbnail-card.cjs.js +11 -0
- package/react/components/ThumbnailCard/thumbnail-card.cjs.js.map +1 -0
- package/react/components/ThumbnailCard/thumbnail-card.js +7 -0
- package/react/components/ThumbnailCard/thumbnail-card.js.map +1 -0
- package/react/components/Toast/toast.cjs.js +1 -1
- package/react/components/Toast/toast.js +1 -1
- package/react/icon-card/index.cjs.js +40 -0
- package/react/icon-card/index.cjs.js.map +1 -0
- package/react/icon-card/index.d.ts +2 -0
- package/react/icon-card/index.js +16 -0
- package/react/icon-card/index.js.map +1 -0
- package/react/image-card/index.cjs.js +40 -0
- package/react/image-card/index.cjs.js.map +1 -0
- package/react/image-card/index.d.ts +2 -0
- package/react/image-card/index.js +16 -0
- package/react/image-card/index.js.map +1 -0
- package/react/index.cjs.js +78 -64
- package/react/index.cjs.js.map +1 -1
- package/react/index.d.ts +7 -0
- package/react/index.js +7 -0
- package/react/index.js.map +1 -1
- package/react/overflow-menu/index.cjs.js +40 -0
- package/react/overflow-menu/index.cjs.js.map +1 -0
- package/react/overflow-menu/index.d.ts +2 -0
- package/react/overflow-menu/index.js +16 -0
- package/react/overflow-menu/index.js.map +1 -0
- package/react/table-cell/index.cjs.js +40 -0
- package/react/table-cell/index.cjs.js.map +1 -0
- package/react/table-cell/index.d.ts +2 -0
- package/react/table-cell/index.js +16 -0
- package/react/table-cell/index.js.map +1 -0
- package/react/table-head/index.cjs.js +40 -0
- package/react/table-head/index.cjs.js.map +1 -0
- package/react/table-head/index.d.ts +2 -0
- package/react/table-head/index.js +16 -0
- package/react/table-head/index.js.map +1 -0
- package/react/table-row/index.cjs.js +40 -0
- package/react/table-row/index.cjs.js.map +1 -0
- package/react/table-row/index.d.ts +2 -0
- package/react/table-row/index.js +16 -0
- package/react/table-row/index.js.map +1 -0
- package/react/thumbnail-card/index.cjs.js +40 -0
- package/react/thumbnail-card/index.cjs.js.map +1 -0
- package/react/thumbnail-card/index.d.ts +2 -0
- package/react/thumbnail-card/index.js +16 -0
- package/react/thumbnail-card/index.js.map +1 -0
- package/react/utils/breakpoints.cjs.js.map +1 -1
- package/react/utils/breakpoints.js.map +1 -1
- package/react/utils/scroll.cjs.js +2 -2
- package/react/utils/scroll.cjs.js.map +1 -1
- package/react/utils/scroll.js +2 -2
- package/react/utils/scroll.js.map +1 -1
- package/themes/day.css +1 -0
- package/themes/night.css +1 -0
- package/themes/root.css +6 -0
- package/utils/breakpoints.d.ts +1 -0
- package/utils/breakpoints.js.map +1 -1
- package/utils/scroll.js +2 -2
- package/utils/scroll.js.map +1 -1
- package/internals/OverflowMenu/sgds-overflow-menu.js.map +0 -1
- package/react/internals/OverflowMenu/sgds-overflow-menu.cjs.js.map +0 -1
- package/react/internals/OverflowMenu/sgds-overflow-menu.js.map +0 -1
- /package/{internals → components}/OverflowMenu/index.d.ts +0 -0
- /package/{internals → components}/OverflowMenu/overflow-menu.js +0 -0
- /package/{internals → components}/OverflowMenu/overflow-menu.js.map +0 -0
- /package/react/{internals → components}/OverflowMenu/overflow-menu.cjs.js +0 -0
- /package/react/{internals → components}/OverflowMenu/overflow-menu.cjs.js.map +0 -0
- /package/react/{internals → components}/OverflowMenu/overflow-menu.js +0 -0
- /package/react/{internals → components}/OverflowMenu/overflow-menu.js.map +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sgds-breadcrumb.js","sources":["../../../../src/components/Breadcrumb/sgds-breadcrumb.ts"],"sourcesContent":["import { property, query } from \"lit/decorators.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { html } from \"lit/static-html.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport SgdsOverflowMenu from \"
|
|
1
|
+
{"version":3,"file":"sgds-breadcrumb.js","sources":["../../../../src/components/Breadcrumb/sgds-breadcrumb.ts"],"sourcesContent":["import { property, query } from \"lit/decorators.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { html } from \"lit/static-html.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport SgdsOverflowMenu from \"../OverflowMenu/sgds-overflow-menu\";\nimport breadcrumbStyle from \"./breadcrumb.css\";\nimport type SgdsBreadcrumbItem from \"./sgds-breadcrumb-item\";\n/**\n * @summary Breadcrumbs help users to navigate and understand where they are on the current website or service.\n *\n * @slot default - The slot to pass in custom elements of `SgdsBreadcrumbItems`.\n *\n */\nexport class SgdsBreadcrumb extends SgdsElement {\n static styles = [...SgdsElement.styles, breadcrumbStyle];\n static dependencies = {\n \"sgds-overflow-menu\": SgdsOverflowMenu\n };\n /** The aria-label of nav element within breadcrumb component. */\n @property({ type: String }) ariaLabel = \"breadcrumb\";\n\n /**@internal */\n @query(\"slot\") defaultSlot: HTMLSlotElement;\n /**\n * creates `<sgds-breadcrumb-item>\n * <sgds-overflow-menu>\n * <sgds-dropdown-item></sgds-dropdown-item>\n * ...\n * </sgds-overflow-menu>\n * <sgds-breadcrumb-item>`\n */\n private _replaceExcessItemsWithDropdown(items: SgdsBreadcrumbItem[]) {\n const breadcrumbItem = document.createElement(\"sgds-breadcrumb-item\");\n const overflowMenu = document.createElement(\"sgds-overflow-menu\");\n overflowMenu.setAttribute(\"aria-haspopup\", \"menu\");\n overflowMenu.setAttribute(\"size\", \"sm\");\n const mapItems = items.filter((item, index) => {\n if (index > 0 && index < items.length - 2) {\n const clonedAnchor = item.querySelector(\"a\");\n const clonedAnchorNode = clonedAnchor.cloneNode(true);\n const dropdownItem = document.createElement(\"sgds-dropdown-item\");\n dropdownItem.appendChild(clonedAnchorNode);\n overflowMenu.appendChild(dropdownItem);\n return;\n } else {\n return item;\n }\n });\n breadcrumbItem.appendChild(overflowMenu);\n mapItems.splice(1, 0, breadcrumbItem);\n\n this.defaultSlot.replaceWith(...mapItems);\n }\n\n private _handleSlotChange(e: Event) {\n const items = (e.target as HTMLSlotElement)\n .assignedElements({ flatten: true })\n .filter(\n (item: SgdsBreadcrumbItem) => item.tagName.toLowerCase() === \"sgds-breadcrumb-item\"\n ) as SgdsBreadcrumbItem[];\n items.forEach((item, index) => {\n if (index === items.length - 1) {\n item.setAttribute(\"aria-current\", \"page\");\n item.active = true;\n } else {\n item.removeAttribute(\"aria-current\");\n }\n });\n\n if (items.length >= 5) {\n this._replaceExcessItemsWithDropdown(items);\n }\n }\n\n render() {\n return html`\n <div aria-label=${ifDefined(this.ariaLabel)}>\n <div class=\"breadcrumb\">\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n </div>\n `;\n }\n}\n\nexport default SgdsBreadcrumb;\n"],"names":["breadcrumbStyle"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
|
|
6
6
|
var lit = require('lit');
|
|
7
7
|
|
|
8
|
-
var css_248z = lit.css`:host([
|
|
8
|
+
var css_248z = lit.css`:host([tinted]) .card-tinted-bg{background-color:var(--sgds-bg-translucent-subtle);opacity:var(--sgds-opacity-50)}slot[name=menu]::slotted(*){position:absolute;right:20px;top:20px;z-index:10}`;
|
|
9
9
|
|
|
10
10
|
exports["default"] = css_248z;
|
|
11
11
|
//# sourceMappingURL=card.cjs.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { css } from 'lit';
|
|
3
3
|
|
|
4
|
-
var css_248z = css`:host([
|
|
4
|
+
var css_248z = css`:host([tinted]) .card-tinted-bg{background-color:var(--sgds-bg-translucent-subtle);opacity:var(--sgds-opacity-50)}slot[name=menu]::slotted(*){position:absolute;right:20px;top:20px;z-index:10}`;
|
|
5
5
|
|
|
6
6
|
export { css_248z as default };
|
|
7
7
|
//# sourceMappingURL=card.js.map
|
|
@@ -12,22 +12,19 @@ var card = require('./card.cjs.js');
|
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* @summary Cards can be used for headers and footers, a wide variety of content, contain contextual background colors and images.
|
|
15
|
+
* @slot default - The content area of the card, placed directly under the title. Accepts any HTML or custom elements.
|
|
16
|
+
* @slot menu - Accepts an element for an overflow or contextual menu, positioned at the top-right corner of the card. Typically used for action menus or dropdowns.
|
|
15
17
|
* @slot image - Accepts an image or svg element of the card. Only a single element is allowed to be passed in.
|
|
16
18
|
* @slot icon - Accepts an icon element to visually represent the card. Only a single element is allowed to be passed in.
|
|
17
19
|
* @slot subtitle - The subtitle of the card
|
|
18
20
|
* @slot title - The title of the card
|
|
19
21
|
* @slot description - The paragrapher text of the card
|
|
22
|
+
* @slot lower - Accepts any additional content to be displayed below the card description, such as badges, metadata, or supplementary information.
|
|
20
23
|
* @slot link - Accepts an anchor element. Only a single element is allowed to be passed in.
|
|
21
24
|
*/
|
|
22
25
|
class SgdsCard extends cardElement.CardElement {
|
|
23
26
|
constructor() {
|
|
24
27
|
super(...arguments);
|
|
25
|
-
/** Extends the link passed in slot[name="link"] to the entire card */
|
|
26
|
-
this.stretchedLink = false;
|
|
27
|
-
/** Disables the card */
|
|
28
|
-
this.disabled = false;
|
|
29
|
-
/** Sets the orientation of the card. Available options: `vertical`, `horizontal` */
|
|
30
|
-
this.orientation = "vertical";
|
|
31
28
|
/** Sets the image position of the card. Available options: `before`, `after` */
|
|
32
29
|
this.imagePosition = "before";
|
|
33
30
|
/** Controls how the image is sized and aligned within the card. Available options: `default`, `padding around`, `aspect ratio` */
|
|
@@ -39,35 +36,9 @@ class SgdsCard extends cardElement.CardElement {
|
|
|
39
36
|
icon.style.display = "none";
|
|
40
37
|
}
|
|
41
38
|
if (this._iconNode.length === 0) {
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
if (this.disabled && this._linkNode.length > 0) {
|
|
46
|
-
const hyperlink = this._linkNode[0].querySelector("a");
|
|
47
|
-
hyperlink.setAttribute("disabled", "true");
|
|
48
|
-
hyperlink.removeAttribute("href");
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
handleTitleSlotChange(e) {
|
|
52
|
-
const childNodes = e.target.assignedNodes({ flatten: true });
|
|
53
|
-
if (this.stretchedLink && childNodes[0] instanceof HTMLAnchorElement) {
|
|
54
|
-
const hyperlink = childNodes[0].querySelector("a") || childNodes[0];
|
|
55
|
-
hyperlink.removeAttribute("href");
|
|
56
|
-
}
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
handleLinkSlotChange(e) {
|
|
60
|
-
const childNodes = e.target.assignedNodes({ flatten: true });
|
|
61
|
-
if (childNodes.length > 1) {
|
|
62
|
-
return console.error("Multiple elements passed into SgdsCard's link slot");
|
|
63
|
-
}
|
|
64
|
-
if (this.stretchedLink && childNodes[0] instanceof HTMLAnchorElement) {
|
|
65
|
-
const hyperlink = childNodes[0].querySelector("a") || childNodes[0];
|
|
66
|
-
this.card.setAttribute("href", hyperlink.href);
|
|
67
|
-
const linkSlot = this.shadowRoot.querySelector("slot[name='link']");
|
|
68
|
-
linkSlot.style.display = "none";
|
|
39
|
+
const media = this.shadowRoot.querySelector(".card-media");
|
|
40
|
+
media.style.display = "none";
|
|
69
41
|
}
|
|
70
|
-
return;
|
|
71
42
|
}
|
|
72
43
|
handleImgSlotChange(e) {
|
|
73
44
|
const childNodes = e.target.assignedNodes({ flatten: true });
|
|
@@ -85,20 +56,26 @@ class SgdsCard extends cardElement.CardElement {
|
|
|
85
56
|
})}"
|
|
86
57
|
tabindex=${cardTabIndex}
|
|
87
58
|
>
|
|
59
|
+
<div class="card-tinted-bg"></div>
|
|
60
|
+
<slot name="menu"></slot>
|
|
88
61
|
<div class="card-image">
|
|
89
62
|
<slot name="image" @slotchange=${this.handleImgSlotChange}></slot>
|
|
90
63
|
</div>
|
|
91
|
-
<div class="card-
|
|
64
|
+
<div class="card-media">
|
|
92
65
|
<slot name="icon"></slot>
|
|
93
66
|
</div>
|
|
94
67
|
<div class="card-body">
|
|
95
|
-
<div class="card-header">
|
|
96
|
-
<
|
|
97
|
-
|
|
68
|
+
<div class="card-header-container">
|
|
69
|
+
<div class="card-header">
|
|
70
|
+
<slot name="subtitle"></slot>
|
|
71
|
+
<h3 class="card-title"><slot name="title" @slotchange=${this.handleTitleSlotChange}></slot></h3>
|
|
72
|
+
</div>
|
|
73
|
+
<slot></slot>
|
|
98
74
|
</div>
|
|
99
75
|
<p class="card-text">
|
|
100
76
|
<slot name="description"></slot>
|
|
101
77
|
</p>
|
|
78
|
+
<slot name="lower"></slot>
|
|
102
79
|
<slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
|
|
103
80
|
</div>
|
|
104
81
|
</${tag}>
|
|
@@ -106,27 +83,12 @@ class SgdsCard extends cardElement.CardElement {
|
|
|
106
83
|
}
|
|
107
84
|
}
|
|
108
85
|
SgdsCard.styles = [...cardElement.CardElement.styles, card["default"]];
|
|
109
|
-
tslib.__decorate([
|
|
110
|
-
decorators_js.query("a.card")
|
|
111
|
-
], SgdsCard.prototype, "card", void 0);
|
|
112
86
|
tslib.__decorate([
|
|
113
87
|
decorators_js.queryAssignedNodes({ slot: "image", flatten: true })
|
|
114
88
|
], SgdsCard.prototype, "_imageNode", void 0);
|
|
115
89
|
tslib.__decorate([
|
|
116
90
|
decorators_js.queryAssignedNodes({ slot: "icon", flatten: true })
|
|
117
91
|
], SgdsCard.prototype, "_iconNode", void 0);
|
|
118
|
-
tslib.__decorate([
|
|
119
|
-
decorators_js.queryAssignedNodes({ slot: "link", flatten: true })
|
|
120
|
-
], SgdsCard.prototype, "_linkNode", void 0);
|
|
121
|
-
tslib.__decorate([
|
|
122
|
-
decorators_js.property({ type: Boolean, reflect: true })
|
|
123
|
-
], SgdsCard.prototype, "stretchedLink", void 0);
|
|
124
|
-
tslib.__decorate([
|
|
125
|
-
decorators_js.property({ type: Boolean, reflect: true })
|
|
126
|
-
], SgdsCard.prototype, "disabled", void 0);
|
|
127
|
-
tslib.__decorate([
|
|
128
|
-
decorators_js.property({ type: String, reflect: true })
|
|
129
|
-
], SgdsCard.prototype, "orientation", void 0);
|
|
130
92
|
tslib.__decorate([
|
|
131
93
|
decorators_js.property({ type: String, reflect: true })
|
|
132
94
|
], SgdsCard.prototype, "imagePosition", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sgds-card.cjs.js","sources":["../../../../src/components/Card/sgds-card.ts"],"sourcesContent":["import { html, literal } from \"lit/static-html.js\";\nimport { property,
|
|
1
|
+
{"version":3,"file":"sgds-card.cjs.js","sources":["../../../../src/components/Card/sgds-card.ts"],"sourcesContent":["import { html, literal } from \"lit/static-html.js\";\nimport { property, queryAssignedNodes } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { CardElement } from \"../../base/card-element\";\nimport { CardImageAdjustment, CardImagePosition } from \"./types\";\nimport cardStyle from \"./card.css\";\n\n/**\n * @summary Cards can be used for headers and footers, a wide variety of content, contain contextual background colors and images.\n * @slot default - The content area of the card, placed directly under the title. Accepts any HTML or custom elements.\n * @slot menu - Accepts an element for an overflow or contextual menu, positioned at the top-right corner of the card. Typically used for action menus or dropdowns.\n * @slot image - Accepts an image or svg element of the card. Only a single element is allowed to be passed in.\n * @slot icon - Accepts an icon element to visually represent the card. Only a single element is allowed to be passed in.\n * @slot subtitle - The subtitle of the card\n * @slot title - The title of the card\n * @slot description - The paragrapher text of the card\n * @slot lower - Accepts any additional content to be displayed below the card description, such as badges, metadata, or supplementary information.\n * @slot link - Accepts an anchor element. Only a single element is allowed to be passed in.\n */\nexport class SgdsCard extends CardElement {\n static styles = [...CardElement.styles, cardStyle];\n\n /** @internal */\n @queryAssignedNodes({ slot: \"image\", flatten: true })\n _imageNode!: Array<Node>;\n /** @internal */\n @queryAssignedNodes({ slot: \"icon\", flatten: true })\n _iconNode!: Array<Node>;\n\n /** Sets the image position of the card. Available options: `before`, `after` */\n @property({ type: String, reflect: true }) imagePosition: CardImagePosition = \"before\";\n\n /** Controls how the image is sized and aligned within the card. Available options: `default`, `padding around`, `aspect ratio` */\n @property({ type: String, reflect: true }) imageAdjustment: CardImageAdjustment = \"default\";\n\n protected firstUpdated() {\n if (this._imageNode.length === 0) {\n const icon = this.shadowRoot.querySelector(\".card-image\") as HTMLDivElement;\n icon.style.display = \"none\";\n }\n if (this._iconNode.length === 0) {\n const media = this.shadowRoot.querySelector(\".card-media\") as HTMLDivElement;\n media.style.display = \"none\";\n }\n }\n\n handleImgSlotChange(e: Event) {\n const childNodes = (e.target as HTMLSlotElement).assignedNodes({ flatten: true }) as Array<HTMLOrSVGImageElement>;\n\n if (childNodes.length > 1) {\n return console.error(\"Multiple elements passed into SgdsCard's image slot\");\n }\n }\n\n render() {\n const tag = this.stretchedLink ? literal`a` : literal`div`;\n const cardTabIndex = !this.stretchedLink || this.disabled ? -1 : 0;\n\n return html`\n <${tag} \n class=\"card ${classMap({\n disabled: this.disabled\n })}\"\n tabindex=${cardTabIndex}\n >\n <div class=\"card-tinted-bg\"></div>\n <slot name=\"menu\"></slot>\n <div class=\"card-image\">\n <slot name=\"image\" @slotchange=${this.handleImgSlotChange}></slot>\n </div>\n <div class=\"card-media\">\n <slot name=\"icon\"></slot>\n </div>\n <div class=\"card-body\">\n <div class=\"card-header-container\">\n <div class=\"card-header\">\n <slot name=\"subtitle\"></slot>\n <h3 class=\"card-title\"><slot name=\"title\" @slotchange=${this.handleTitleSlotChange}></slot></h3>\n </div>\n <slot></slot>\n </div>\n <p class=\"card-text\">\n <slot name=\"description\"></slot>\n </p>\n <slot name=\"lower\"></slot>\n <slot name=\"link\" @slotchange=${this.handleLinkSlotChange}></slot>\n </div>\n </${tag}>\n `;\n }\n}\n\nexport default SgdsCard;\n"],"names":["CardElement","literal","html","classMap","cardStyle","__decorate","queryAssignedNodes","property"],"mappings":";;;;;;;;;;;;AAOA;;;;;;;;;;;AAWG;AACG,MAAO,QAAS,SAAQA,uBAAW,CAAA;AAAzC,IAAA,WAAA,GAAA;;;QAW6C,IAAa,CAAA,aAAA,GAAsB,QAAQ,CAAC;;QAG5C,IAAe,CAAA,eAAA,GAAwB,SAAS,CAAC;KAyD7F;IAvDW,YAAY,GAAA;QACpB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAmB,CAAC;AAC5E,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;SAC7B;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAmB,CAAC;AAC7E,YAAA,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;SAC9B;KACF;AAED,IAAA,mBAAmB,CAAC,CAAQ,EAAA;AAC1B,QAAA,MAAM,UAAU,GAAI,CAAC,CAAC,MAA0B,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAiC,CAAC;AAElH,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;SAC7E;KACF;IAED,MAAM,GAAA;AACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,GAAGC,qBAAO,CAAA,GAAG,GAAGA,qBAAO,CAAA,KAAK,CAAC;AAC3D,QAAA,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAEnE,QAAA,OAAOC,kBAAI,CAAA,CAAA;SACN,GAAG,CAAA;AACU,oBAAA,EAAAC,oBAAQ,CAAC;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAA;mBACS,YAAY,CAAA;;;;;AAKY,yCAAA,EAAA,IAAI,CAAC,mBAAmB,CAAA;;;;;;;;;AASG,oEAAA,EAAA,IAAI,CAAC,qBAAqB,CAAA;;;;;;;;AAQtD,wCAAA,EAAA,IAAI,CAAC,oBAAoB,CAAA;;UAEzD,GAAG,CAAA;KACR,CAAC;KACH;;AArEM,QAAM,CAAA,MAAA,GAAG,CAAC,GAAGH,uBAAW,CAAC,MAAM,EAAEI,eAAS,CAApC,CAAsC;AAInDC,gBAAA,CAAA;IADCC,gCAAkB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGzBD,gBAAA,CAAA;IADCC,gCAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGmBD,gBAAA,CAAA;IAA1CE,sBAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAA6C,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAG5CF,gBAAA,CAAA;IAA1CE,sBAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAkD,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA;;;;;"}
|
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { __decorate } from 'tslib';
|
|
3
3
|
import { literal, html } from 'lit/static-html.js';
|
|
4
|
-
import {
|
|
4
|
+
import { queryAssignedNodes, property } from 'lit/decorators.js';
|
|
5
5
|
import { classMap } from 'lit/directives/class-map.js';
|
|
6
6
|
import { CardElement } from '../../base/card-element.js';
|
|
7
7
|
import css_248z from './card.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* @summary Cards can be used for headers and footers, a wide variety of content, contain contextual background colors and images.
|
|
11
|
+
* @slot default - The content area of the card, placed directly under the title. Accepts any HTML or custom elements.
|
|
12
|
+
* @slot menu - Accepts an element for an overflow or contextual menu, positioned at the top-right corner of the card. Typically used for action menus or dropdowns.
|
|
11
13
|
* @slot image - Accepts an image or svg element of the card. Only a single element is allowed to be passed in.
|
|
12
14
|
* @slot icon - Accepts an icon element to visually represent the card. Only a single element is allowed to be passed in.
|
|
13
15
|
* @slot subtitle - The subtitle of the card
|
|
14
16
|
* @slot title - The title of the card
|
|
15
17
|
* @slot description - The paragrapher text of the card
|
|
18
|
+
* @slot lower - Accepts any additional content to be displayed below the card description, such as badges, metadata, or supplementary information.
|
|
16
19
|
* @slot link - Accepts an anchor element. Only a single element is allowed to be passed in.
|
|
17
20
|
*/
|
|
18
21
|
class SgdsCard extends CardElement {
|
|
19
22
|
constructor() {
|
|
20
23
|
super(...arguments);
|
|
21
|
-
/** Extends the link passed in slot[name="link"] to the entire card */
|
|
22
|
-
this.stretchedLink = false;
|
|
23
|
-
/** Disables the card */
|
|
24
|
-
this.disabled = false;
|
|
25
|
-
/** Sets the orientation of the card. Available options: `vertical`, `horizontal` */
|
|
26
|
-
this.orientation = "vertical";
|
|
27
24
|
/** Sets the image position of the card. Available options: `before`, `after` */
|
|
28
25
|
this.imagePosition = "before";
|
|
29
26
|
/** Controls how the image is sized and aligned within the card. Available options: `default`, `padding around`, `aspect ratio` */
|
|
@@ -35,35 +32,9 @@ class SgdsCard extends CardElement {
|
|
|
35
32
|
icon.style.display = "none";
|
|
36
33
|
}
|
|
37
34
|
if (this._iconNode.length === 0) {
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
if (this.disabled && this._linkNode.length > 0) {
|
|
42
|
-
const hyperlink = this._linkNode[0].querySelector("a");
|
|
43
|
-
hyperlink.setAttribute("disabled", "true");
|
|
44
|
-
hyperlink.removeAttribute("href");
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
handleTitleSlotChange(e) {
|
|
48
|
-
const childNodes = e.target.assignedNodes({ flatten: true });
|
|
49
|
-
if (this.stretchedLink && childNodes[0] instanceof HTMLAnchorElement) {
|
|
50
|
-
const hyperlink = childNodes[0].querySelector("a") || childNodes[0];
|
|
51
|
-
hyperlink.removeAttribute("href");
|
|
52
|
-
}
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
handleLinkSlotChange(e) {
|
|
56
|
-
const childNodes = e.target.assignedNodes({ flatten: true });
|
|
57
|
-
if (childNodes.length > 1) {
|
|
58
|
-
return console.error("Multiple elements passed into SgdsCard's link slot");
|
|
59
|
-
}
|
|
60
|
-
if (this.stretchedLink && childNodes[0] instanceof HTMLAnchorElement) {
|
|
61
|
-
const hyperlink = childNodes[0].querySelector("a") || childNodes[0];
|
|
62
|
-
this.card.setAttribute("href", hyperlink.href);
|
|
63
|
-
const linkSlot = this.shadowRoot.querySelector("slot[name='link']");
|
|
64
|
-
linkSlot.style.display = "none";
|
|
35
|
+
const media = this.shadowRoot.querySelector(".card-media");
|
|
36
|
+
media.style.display = "none";
|
|
65
37
|
}
|
|
66
|
-
return;
|
|
67
38
|
}
|
|
68
39
|
handleImgSlotChange(e) {
|
|
69
40
|
const childNodes = e.target.assignedNodes({ flatten: true });
|
|
@@ -81,20 +52,26 @@ class SgdsCard extends CardElement {
|
|
|
81
52
|
})}"
|
|
82
53
|
tabindex=${cardTabIndex}
|
|
83
54
|
>
|
|
55
|
+
<div class="card-tinted-bg"></div>
|
|
56
|
+
<slot name="menu"></slot>
|
|
84
57
|
<div class="card-image">
|
|
85
58
|
<slot name="image" @slotchange=${this.handleImgSlotChange}></slot>
|
|
86
59
|
</div>
|
|
87
|
-
<div class="card-
|
|
60
|
+
<div class="card-media">
|
|
88
61
|
<slot name="icon"></slot>
|
|
89
62
|
</div>
|
|
90
63
|
<div class="card-body">
|
|
91
|
-
<div class="card-header">
|
|
92
|
-
<
|
|
93
|
-
|
|
64
|
+
<div class="card-header-container">
|
|
65
|
+
<div class="card-header">
|
|
66
|
+
<slot name="subtitle"></slot>
|
|
67
|
+
<h3 class="card-title"><slot name="title" @slotchange=${this.handleTitleSlotChange}></slot></h3>
|
|
68
|
+
</div>
|
|
69
|
+
<slot></slot>
|
|
94
70
|
</div>
|
|
95
71
|
<p class="card-text">
|
|
96
72
|
<slot name="description"></slot>
|
|
97
73
|
</p>
|
|
74
|
+
<slot name="lower"></slot>
|
|
98
75
|
<slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
|
|
99
76
|
</div>
|
|
100
77
|
</${tag}>
|
|
@@ -102,27 +79,12 @@ class SgdsCard extends CardElement {
|
|
|
102
79
|
}
|
|
103
80
|
}
|
|
104
81
|
SgdsCard.styles = [...CardElement.styles, css_248z];
|
|
105
|
-
__decorate([
|
|
106
|
-
query("a.card")
|
|
107
|
-
], SgdsCard.prototype, "card", void 0);
|
|
108
82
|
__decorate([
|
|
109
83
|
queryAssignedNodes({ slot: "image", flatten: true })
|
|
110
84
|
], SgdsCard.prototype, "_imageNode", void 0);
|
|
111
85
|
__decorate([
|
|
112
86
|
queryAssignedNodes({ slot: "icon", flatten: true })
|
|
113
87
|
], SgdsCard.prototype, "_iconNode", void 0);
|
|
114
|
-
__decorate([
|
|
115
|
-
queryAssignedNodes({ slot: "link", flatten: true })
|
|
116
|
-
], SgdsCard.prototype, "_linkNode", void 0);
|
|
117
|
-
__decorate([
|
|
118
|
-
property({ type: Boolean, reflect: true })
|
|
119
|
-
], SgdsCard.prototype, "stretchedLink", void 0);
|
|
120
|
-
__decorate([
|
|
121
|
-
property({ type: Boolean, reflect: true })
|
|
122
|
-
], SgdsCard.prototype, "disabled", void 0);
|
|
123
|
-
__decorate([
|
|
124
|
-
property({ type: String, reflect: true })
|
|
125
|
-
], SgdsCard.prototype, "orientation", void 0);
|
|
126
88
|
__decorate([
|
|
127
89
|
property({ type: String, reflect: true })
|
|
128
90
|
], SgdsCard.prototype, "imagePosition", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sgds-card.js","sources":["../../../../src/components/Card/sgds-card.ts"],"sourcesContent":["import { html, literal } from \"lit/static-html.js\";\nimport { property,
|
|
1
|
+
{"version":3,"file":"sgds-card.js","sources":["../../../../src/components/Card/sgds-card.ts"],"sourcesContent":["import { html, literal } from \"lit/static-html.js\";\nimport { property, queryAssignedNodes } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { CardElement } from \"../../base/card-element\";\nimport { CardImageAdjustment, CardImagePosition } from \"./types\";\nimport cardStyle from \"./card.css\";\n\n/**\n * @summary Cards can be used for headers and footers, a wide variety of content, contain contextual background colors and images.\n * @slot default - The content area of the card, placed directly under the title. Accepts any HTML or custom elements.\n * @slot menu - Accepts an element for an overflow or contextual menu, positioned at the top-right corner of the card. Typically used for action menus or dropdowns.\n * @slot image - Accepts an image or svg element of the card. Only a single element is allowed to be passed in.\n * @slot icon - Accepts an icon element to visually represent the card. Only a single element is allowed to be passed in.\n * @slot subtitle - The subtitle of the card\n * @slot title - The title of the card\n * @slot description - The paragrapher text of the card\n * @slot lower - Accepts any additional content to be displayed below the card description, such as badges, metadata, or supplementary information.\n * @slot link - Accepts an anchor element. Only a single element is allowed to be passed in.\n */\nexport class SgdsCard extends CardElement {\n static styles = [...CardElement.styles, cardStyle];\n\n /** @internal */\n @queryAssignedNodes({ slot: \"image\", flatten: true })\n _imageNode!: Array<Node>;\n /** @internal */\n @queryAssignedNodes({ slot: \"icon\", flatten: true })\n _iconNode!: Array<Node>;\n\n /** Sets the image position of the card. Available options: `before`, `after` */\n @property({ type: String, reflect: true }) imagePosition: CardImagePosition = \"before\";\n\n /** Controls how the image is sized and aligned within the card. Available options: `default`, `padding around`, `aspect ratio` */\n @property({ type: String, reflect: true }) imageAdjustment: CardImageAdjustment = \"default\";\n\n protected firstUpdated() {\n if (this._imageNode.length === 0) {\n const icon = this.shadowRoot.querySelector(\".card-image\") as HTMLDivElement;\n icon.style.display = \"none\";\n }\n if (this._iconNode.length === 0) {\n const media = this.shadowRoot.querySelector(\".card-media\") as HTMLDivElement;\n media.style.display = \"none\";\n }\n }\n\n handleImgSlotChange(e: Event) {\n const childNodes = (e.target as HTMLSlotElement).assignedNodes({ flatten: true }) as Array<HTMLOrSVGImageElement>;\n\n if (childNodes.length > 1) {\n return console.error(\"Multiple elements passed into SgdsCard's image slot\");\n }\n }\n\n render() {\n const tag = this.stretchedLink ? literal`a` : literal`div`;\n const cardTabIndex = !this.stretchedLink || this.disabled ? -1 : 0;\n\n return html`\n <${tag} \n class=\"card ${classMap({\n disabled: this.disabled\n })}\"\n tabindex=${cardTabIndex}\n >\n <div class=\"card-tinted-bg\"></div>\n <slot name=\"menu\"></slot>\n <div class=\"card-image\">\n <slot name=\"image\" @slotchange=${this.handleImgSlotChange}></slot>\n </div>\n <div class=\"card-media\">\n <slot name=\"icon\"></slot>\n </div>\n <div class=\"card-body\">\n <div class=\"card-header-container\">\n <div class=\"card-header\">\n <slot name=\"subtitle\"></slot>\n <h3 class=\"card-title\"><slot name=\"title\" @slotchange=${this.handleTitleSlotChange}></slot></h3>\n </div>\n <slot></slot>\n </div>\n <p class=\"card-text\">\n <slot name=\"description\"></slot>\n </p>\n <slot name=\"lower\"></slot>\n <slot name=\"link\" @slotchange=${this.handleLinkSlotChange}></slot>\n </div>\n </${tag}>\n `;\n }\n}\n\nexport default SgdsCard;\n"],"names":["cardStyle"],"mappings":";;;;;;;;AAOA;;;;;;;;;;;AAWG;AACG,MAAO,QAAS,SAAQ,WAAW,CAAA;AAAzC,IAAA,WAAA,GAAA;;;QAW6C,IAAa,CAAA,aAAA,GAAsB,QAAQ,CAAC;;QAG5C,IAAe,CAAA,eAAA,GAAwB,SAAS,CAAC;KAyD7F;IAvDW,YAAY,GAAA;QACpB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAmB,CAAC;AAC5E,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;SAC7B;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAmB,CAAC;AAC7E,YAAA,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;SAC9B;KACF;AAED,IAAA,mBAAmB,CAAC,CAAQ,EAAA;AAC1B,QAAA,MAAM,UAAU,GAAI,CAAC,CAAC,MAA0B,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAiC,CAAC;AAElH,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;SAC7E;KACF;IAED,MAAM,GAAA;AACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO,CAAA,GAAG,GAAG,OAAO,CAAA,KAAK,CAAC;AAC3D,QAAA,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAEnE,QAAA,OAAO,IAAI,CAAA,CAAA;SACN,GAAG,CAAA;AACU,oBAAA,EAAA,QAAQ,CAAC;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAA;mBACS,YAAY,CAAA;;;;;AAKY,yCAAA,EAAA,IAAI,CAAC,mBAAmB,CAAA;;;;;;;;;AASG,oEAAA,EAAA,IAAI,CAAC,qBAAqB,CAAA;;;;;;;;AAQtD,wCAAA,EAAA,IAAI,CAAC,oBAAoB,CAAA;;UAEzD,GAAG,CAAA;KACR,CAAC;KACH;;AArEM,QAAM,CAAA,MAAA,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAEA,QAAS,CAApC,CAAsC;AAInD,UAAA,CAAA;IADC,kBAAkB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGzB,UAAA,CAAA;IADC,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGmB,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAA6C,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAG5C,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAkD,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA;;;;"}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
|
|
6
6
|
var lit = require('lit');
|
|
7
7
|
|
|
8
|
-
var css_248z = lit.css`:host([active]) .dropdown-item{background-color:var(--sgds-primary-surface-translucent)}.dropdown-item{background-color:var(--sgds-bg-transparent);clear:both;color:var(--sgds-color-default);cursor:pointer;height:100%;padding:var(--sgds-padding-sm) var(--sgds-padding-lg);text-align:inherit
|
|
8
|
+
var css_248z = lit.css`:host([active]) .dropdown-item{background-color:var(--sgds-primary-surface-translucent)}.dropdown-item{background-color:var(--sgds-bg-transparent);clear:both;color:var(--sgds-color-default);cursor:pointer;height:100%;padding:var(--sgds-padding-sm) var(--sgds-padding-lg);text-align:inherit}.dropdown-item .normal-item-content{align-items:center;display:flex;justify-content:space-between}:host([active]) .dropdown-item .normal-item-content{color:var(--sgds-primary-bg-default)}:host([active]) .dropdown-item .normal-item-content sgds-icon{fill:var(--sgds-primary-bg-default);color:var(--sgds-primary-bg-default)}.dropdown-item:hover{background:var(--sgds-bg-translucent-subtle)}.dropdown-item:focus,.dropdown-item:focus-visible{background:var(--sgds-bg-translucent-subtle);box-shadow:inset var(--sgds-form-box-shadow-focus);outline:0}`;
|
|
9
9
|
|
|
10
10
|
exports["default"] = css_248z;
|
|
11
11
|
//# sourceMappingURL=combo-box-item.cjs2.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { css } from 'lit';
|
|
3
3
|
|
|
4
|
-
var css_248z = css`:host([active]) .dropdown-item{background-color:var(--sgds-primary-surface-translucent)}.dropdown-item{background-color:var(--sgds-bg-transparent);clear:both;color:var(--sgds-color-default);cursor:pointer;height:100%;padding:var(--sgds-padding-sm) var(--sgds-padding-lg);text-align:inherit
|
|
4
|
+
var css_248z = css`:host([active]) .dropdown-item{background-color:var(--sgds-primary-surface-translucent)}.dropdown-item{background-color:var(--sgds-bg-transparent);clear:both;color:var(--sgds-color-default);cursor:pointer;height:100%;padding:var(--sgds-padding-sm) var(--sgds-padding-lg);text-align:inherit}.dropdown-item .normal-item-content{align-items:center;display:flex;justify-content:space-between}:host([active]) .dropdown-item .normal-item-content{color:var(--sgds-primary-bg-default)}:host([active]) .dropdown-item .normal-item-content sgds-icon{fill:var(--sgds-primary-bg-default);color:var(--sgds-primary-bg-default)}.dropdown-item:hover{background:var(--sgds-bg-translucent-subtle)}.dropdown-item:focus,.dropdown-item:focus-visible{background:var(--sgds-bg-translucent-subtle);box-shadow:inset var(--sgds-form-box-shadow-focus);outline:0}`;
|
|
5
5
|
|
|
6
6
|
export { css_248z as default };
|
|
7
7
|
//# sourceMappingURL=combo-box-item2.js.map
|
|
@@ -139,7 +139,8 @@ class SgdsComboBox extends selectElement.SelectElement {
|
|
|
139
139
|
this.selectedItems = this.selectedItems.filter(i => i.value !== foundItem.value);
|
|
140
140
|
this.value = this.selectedItems.map(i => i.value).join(";");
|
|
141
141
|
}
|
|
142
|
-
async _handleBadgeDismissed(item) {
|
|
142
|
+
async _handleBadgeDismissed(e, item) {
|
|
143
|
+
e.preventDefault();
|
|
143
144
|
this.selectedItems = this.selectedItems.filter(i => i.value !== item.value);
|
|
144
145
|
this.value = this.selectedItems.map(i => i.value).join(";");
|
|
145
146
|
}
|
|
@@ -238,7 +239,7 @@ class SgdsComboBox extends selectElement.SelectElement {
|
|
|
238
239
|
variant="neutral"
|
|
239
240
|
show
|
|
240
241
|
dismissible
|
|
241
|
-
@sgds-hide=${
|
|
242
|
+
@sgds-hide=${e => this._handleBadgeDismissed(e, item)}
|
|
242
243
|
>${item.label}</sgds-badge
|
|
243
244
|
>`)}
|
|
244
245
|
`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sgds-combo-box.cjs.js","sources":["../../../../src/components/ComboBox/sgds-combo-box.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property, queryAsync, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { live } from \"lit/directives/live.js\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { SelectElement, SgdsSelectItemData } from \"../../base/select-element\";\nimport { watch } from \"../../utils/watch\";\nimport { SgdsBadge } from \"../Badge/sgds-badge\";\nimport SgdsIcon from \"../Icon/sgds-icon\";\nimport { ComboBoxItem } from \"./combo-box-item\";\nimport comboBoxStyle from \"./combo-box.css\";\n\n/**\n * Each item in the ComboBox has a label to display\n * and a value (the actual data / ID).\n */\ntype SgdsComboBoxItemData = SgdsSelectItemData;\n/**\n * @summary ComboBox component is used for users to make one or more selections from a list through user input, keyboard or mouse actions\n *\n * @slot icon - slot for form control icon to be displayed on the right of the input box.\n *\n * @event sgds-select - Emitted when the combo box's selected value changes.\n * @event sgds-input - Emitted when user input is received and its value changes.\n */\n\nexport class SgdsComboBox extends SelectElement {\n static styles = [...SelectElement.styles, comboBoxStyle];\n\n /** @internal */\n static dependencies = {\n \"sgds-combo-box-item\": ComboBoxItem,\n \"sgds-icon\": SgdsIcon,\n \"sgds-badge\": SgdsBadge\n };\n\n /** If true, renders multiple checkbox selection items. If false, single-select. */\n @property({ type: Boolean, reflect: true }) multiSelect = false;\n\n /** The function used to filter the menu list, given the user's input value. */\n @property()\n filterFunction: (inputValue: string, item: SgdsComboBoxItemData) => boolean = (inputValue, item) => {\n return item.label.toLowerCase().startsWith(inputValue.toLowerCase());\n };\n\n /** Managed menu to render depending on the activity. On input change, show filteredMenu, on selections and initial state show full menu list. */\n @state()\n private _renderedMenu: SgdsComboBoxItemData[] = [];\n\n @queryAsync(\"input#multi-select-input-tracker\") private _multiSelectInput: Promise<HTMLInputElement>;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener(\"sgds-hide\", async () => {\n const sgdsInput = await this._input;\n sgdsInput.focus();\n this._renderedMenu = this.menuList;\n });\n }\n\n async firstUpdated() {\n super.firstUpdated();\n\n this._renderedMenu = this.menuList;\n if (this.value) {\n const valueArray = this.value.split(\";\");\n const initialSelectedItem = this.menuList.filter(({ value }) => valueArray.includes(value));\n this.selectedItems = [...initialSelectedItem, ...this.selectedItems];\n\n if (!this.multiSelect) {\n this.displayValue = initialSelectedItem[0].label;\n }\n }\n this.multiSelect ? (this.input = await this._multiSelectInput) : (this.input = await this._input);\n this._mixinValidate(this.input);\n\n if (this.menuIsOpen && !this.readonly) {\n this.showMenu();\n }\n }\n\n @watch(\"value\", { waitUntilFirstUpdate: true })\n async _handleValueChange() {\n if (this.value) {\n this.emit(\"sgds-select\");\n }\n const sgdsInput = await this._input;\n this._mixinSetFormValue();\n\n if (this.multiSelect) {\n this._mixinValidate(this.input);\n } else {\n // this._mixinValidate(sgdsInput.input);\n this._mixinValidate(sgdsInput);\n }\n if (!this._isTouched && this.value === \"\") return;\n\n this.invalid = !this._mixinReportValidity();\n }\n\n // Called each time the user types in the <sgds-input>, we set .value and show the menu\n private async _handleInputChange(e: CustomEvent) {\n this.emit(\"sgds-input\");\n const input = e.target as HTMLInputElement;\n this.displayValue = input.value;\n this.filteredMenuList = this.menuList.filter(item => this.filterFunction(this.displayValue, item));\n\n // reset menu list when displayValue\n if (this.displayValue === \"\" && !this.multiSelect) {\n this.selectedItems = [];\n this.value = this.selectedItems.join(\";\");\n }\n\n this.invalid = false;\n this.showMenu();\n\n this.displayValue = (e.target as HTMLInputElement).value;\n this._renderedMenu = this.filteredMenuList;\n\n if (this.displayValue === \"\") {\n this._renderedMenu = this.menuList;\n await this.updateComplete;\n }\n }\n\n /**\n * Called whenever an <sgds-combo-box-item> dispatches sgds-select\"\n */\n protected async _handleItemSelected(e: CustomEvent) {\n const itemEl = e.target as ComboBoxItem;\n const itemLabel = itemEl.textContent?.trim() ?? \"\";\n const itemValueAttr = itemEl.getAttribute(\"value\") ?? itemLabel;\n const foundItem = this.filteredMenuList.find(i => i.value.toString() === itemValueAttr) || {\n label: itemLabel,\n value: itemValueAttr\n };\n\n if (this.multiSelect) {\n if (!this.selectedItems.some(i => i.value === foundItem.value)) {\n this.selectedItems = [...this.selectedItems, foundItem];\n setTimeout(() => (this.displayValue = \"\"));\n }\n this.hideMenu();\n this.value = this.selectedItems.map(i => i.value).join(\";\");\n } else {\n // Single-select\n this.selectedItems = [foundItem];\n this.value = foundItem.value.toString();\n this.displayValue = this.selectedItems[0].label;\n this.hideMenu();\n }\n }\n\n private _handleItemUnselect(e: CustomEvent) {\n const itemEl = e.target as ComboBoxItem;\n\n const itemLabel = itemEl.textContent?.trim() ?? \"\";\n const itemValueAttr = itemEl.getAttribute(\"value\") ?? itemLabel;\n const foundItem = this.filteredMenuList.find(i => i.value.toString() === itemValueAttr) || {\n label: itemLabel,\n value: itemValueAttr\n };\n\n this.selectedItems = this.selectedItems.filter(i => i.value !== foundItem.value);\n this.value = this.selectedItems.map(i => i.value).join(\";\");\n }\n\n private async _handleBadgeDismissed(item: SgdsComboBoxItemData) {\n this.selectedItems = this.selectedItems.filter(i => i.value !== item.value);\n this.value = this.selectedItems.map(i => i.value).join(\";\");\n }\n private async _handleMultiSelectKeyDown(e: KeyboardEvent) {\n // Only do this in multi-select mode\n if (!this.multiSelect) {\n return;\n }\n\n if (e.key === \"Backspace\" && this.multiSelect) {\n if (this.displayValue.trim() === \"\" && this.selectedItems.length > 0) {\n this.selectedItems = this.selectedItems.slice(0, -1);\n this.value = this.selectedItems.map(i => i.value).join(\";\");\n }\n }\n }\n protected async _handleInputBlur(e: Event) {\n e.preventDefault();\n if (this.multiSelect) {\n const displayValueMatchedSelectedItems = this.selectedItems.filter(({ label }) => this.displayValue === label);\n if (displayValueMatchedSelectedItems.length <= 0) {\n this.displayValue = \"\";\n }\n } else {\n // Single select\n if (this.selectedItems.length > 0) {\n this.displayValue = this.selectedItems[0].label;\n } else {\n this.displayValue = \"\";\n }\n }\n }\n\n /** For form reset */\n protected async _mixinResetFormControl() {\n this.value = this.defaultValue;\n if (!this.multiSelect) {\n const initialItem = this.menuList.filter(({ value }) => value === this.value);\n if (initialItem.length <= 0) {\n this.displayValue = \"\";\n } else {\n this.displayValue = initialItem[0].label;\n }\n this._mixinResetValidity(await this._input);\n } else {\n const valueArray = this.value.split(\";\");\n const initialItem = this.menuList.filter(({ value }) => valueArray.includes(value));\n this.selectedItems = initialItem;\n this._mixinResetValidity(await this._multiSelectInput);\n }\n }\n\n protected _renderMenu() {\n const emptyMenu = html` <div class=\"empty-menu\">No options</div> `;\n const menu = this._renderedMenu.map(item => {\n let isActive = false;\n if (this.multiSelect) {\n const selectedItemValueArray = this.selectedItems.map(i => i.value);\n isActive = selectedItemValueArray.includes(item.value);\n } else {\n isActive = item.value === this.value;\n }\n return html`\n <sgds-combo-box-item\n ?active=${isActive}\n ?checkbox=${this.multiSelect}\n value=${item.value}\n @sgds-select=${this._handleItemSelected}\n @sgds-unselect=${this._handleItemUnselect}\n >\n ${item.label}\n </sgds-combo-box-item>\n `;\n });\n return this._renderedMenu.length === 0 ? emptyMenu : menu;\n }\n\n protected _renderInput() {\n const wantFeedbackStyle = this.hasFeedback;\n return html`\n <div\n ${ref(this.myDropdown)}\n class=\"form-control-group ${classMap({\n disabled: this.disabled,\n readonly: this.readonly,\n \"is-invalid\": this.invalid && wantFeedbackStyle\n })}\"\n @click=${this._handleClick}\n >\n <div class=\"combobox-input-container\">\n ${this.multiSelect\n ? html`\n ${this.selectedItems.map(\n item =>\n html`<sgds-badge\n outlined\n variant=\"neutral\"\n show\n dismissible\n @sgds-hide=${() => this._handleBadgeDismissed(item)}\n >${item.label}</sgds-badge\n >`\n )}\n `\n : nothing}\n <input\n class=\"form-control\"\n type=\"text\"\n id=${this._controlId}\n name=${ifDefined(this.name)}\n placeholder=${ifDefined(this.placeholder)}\n aria-invalid=${this.invalid ? \"true\" : \"false\"}\n ?autofocus=${this.autofocus}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?required=${this.required}\n .value=${this.displayValue}\n @input=${this._handleInputChange}\n @blur=${this._handleInputBlur}\n aria-describedby=${ifDefined(this.invalid && this.hasFeedback ? `${this._controlId}-invalid` : undefined)}\n aria-labelledby=\"${this._labelId} ${this._controlId}Help ${this.invalid && this.hasFeedback\n ? `${this._controlId}-invalid`\n : \"\"}\"\n />\n </div>\n <sgds-icon name=\"chevron-down\" size=\"md\"></sgds-icon>\n </div>\n `;\n }\n render() {\n return html`\n <div class=\"combobox\" @keydown=${this._handleMultiSelectKeyDown}>\n ${this._renderLabel()}\n <!-- The input -->\n ${this._renderInput()} ${this._renderFeedback()}\n <ul id=${this.dropdownMenuId} class=\"dropdown-menu\" part=\"menu\" tabindex=\"-1\">\n ${this._renderMenu()}\n </ul>\n </div>\n <!-- Required an input element for constraint validation -->\n ${this.multiSelect\n ? html`<input\n .value=${live(this.value)}\n id=\"multi-select-input-tracker\"\n class=\"visually-hidden\"\n ?required=${this.required}\n />`\n : nothing}\n `;\n }\n}\n\nexport default SgdsComboBox;\n"],"names":["SelectElement","html","ref","classMap","nothing","ifDefined","live","comboBoxStyle","ComboBoxItem","SgdsIcon","SgdsBadge","__decorate","property","state","queryAsync","watch"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sgds-combo-box.cjs.js","sources":["../../../../src/components/ComboBox/sgds-combo-box.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property, queryAsync, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { live } from \"lit/directives/live.js\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { SelectElement, SgdsSelectItemData } from \"../../base/select-element\";\nimport { watch } from \"../../utils/watch\";\nimport { SgdsBadge } from \"../Badge/sgds-badge\";\nimport SgdsIcon from \"../Icon/sgds-icon\";\nimport { ComboBoxItem } from \"./combo-box-item\";\nimport comboBoxStyle from \"./combo-box.css\";\n\n/**\n * Each item in the ComboBox has a label to display\n * and a value (the actual data / ID).\n */\ntype SgdsComboBoxItemData = SgdsSelectItemData;\n/**\n * @summary ComboBox component is used for users to make one or more selections from a list through user input, keyboard or mouse actions\n *\n * @slot icon - slot for form control icon to be displayed on the right of the input box.\n *\n * @event sgds-select - Emitted when the combo box's selected value changes.\n * @event sgds-input - Emitted when user input is received and its value changes.\n */\n\nexport class SgdsComboBox extends SelectElement {\n static styles = [...SelectElement.styles, comboBoxStyle];\n\n /** @internal */\n static dependencies = {\n \"sgds-combo-box-item\": ComboBoxItem,\n \"sgds-icon\": SgdsIcon,\n \"sgds-badge\": SgdsBadge\n };\n\n /** If true, renders multiple checkbox selection items. If false, single-select. */\n @property({ type: Boolean, reflect: true }) multiSelect = false;\n\n /** The function used to filter the menu list, given the user's input value. */\n @property()\n filterFunction: (inputValue: string, item: SgdsComboBoxItemData) => boolean = (inputValue, item) => {\n return item.label.toLowerCase().startsWith(inputValue.toLowerCase());\n };\n\n /** Managed menu to render depending on the activity. On input change, show filteredMenu, on selections and initial state show full menu list. */\n @state()\n private _renderedMenu: SgdsComboBoxItemData[] = [];\n\n @queryAsync(\"input#multi-select-input-tracker\") private _multiSelectInput: Promise<HTMLInputElement>;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener(\"sgds-hide\", async () => {\n const sgdsInput = await this._input;\n sgdsInput.focus();\n this._renderedMenu = this.menuList;\n });\n }\n\n async firstUpdated() {\n super.firstUpdated();\n\n this._renderedMenu = this.menuList;\n if (this.value) {\n const valueArray = this.value.split(\";\");\n const initialSelectedItem = this.menuList.filter(({ value }) => valueArray.includes(value));\n this.selectedItems = [...initialSelectedItem, ...this.selectedItems];\n\n if (!this.multiSelect) {\n this.displayValue = initialSelectedItem[0].label;\n }\n }\n this.multiSelect ? (this.input = await this._multiSelectInput) : (this.input = await this._input);\n this._mixinValidate(this.input);\n\n if (this.menuIsOpen && !this.readonly) {\n this.showMenu();\n }\n }\n\n @watch(\"value\", { waitUntilFirstUpdate: true })\n async _handleValueChange() {\n if (this.value) {\n this.emit(\"sgds-select\");\n }\n const sgdsInput = await this._input;\n this._mixinSetFormValue();\n\n if (this.multiSelect) {\n this._mixinValidate(this.input);\n } else {\n // this._mixinValidate(sgdsInput.input);\n this._mixinValidate(sgdsInput);\n }\n if (!this._isTouched && this.value === \"\") return;\n\n this.invalid = !this._mixinReportValidity();\n }\n\n // Called each time the user types in the <sgds-input>, we set .value and show the menu\n private async _handleInputChange(e: CustomEvent) {\n this.emit(\"sgds-input\");\n const input = e.target as HTMLInputElement;\n this.displayValue = input.value;\n this.filteredMenuList = this.menuList.filter(item => this.filterFunction(this.displayValue, item));\n\n // reset menu list when displayValue\n if (this.displayValue === \"\" && !this.multiSelect) {\n this.selectedItems = [];\n this.value = this.selectedItems.join(\";\");\n }\n\n this.invalid = false;\n this.showMenu();\n\n this.displayValue = (e.target as HTMLInputElement).value;\n this._renderedMenu = this.filteredMenuList;\n\n if (this.displayValue === \"\") {\n this._renderedMenu = this.menuList;\n await this.updateComplete;\n }\n }\n\n /**\n * Called whenever an <sgds-combo-box-item> dispatches sgds-select\"\n */\n protected async _handleItemSelected(e: CustomEvent) {\n const itemEl = e.target as ComboBoxItem;\n const itemLabel = itemEl.textContent?.trim() ?? \"\";\n const itemValueAttr = itemEl.getAttribute(\"value\") ?? itemLabel;\n const foundItem = this.filteredMenuList.find(i => i.value.toString() === itemValueAttr) || {\n label: itemLabel,\n value: itemValueAttr\n };\n\n if (this.multiSelect) {\n if (!this.selectedItems.some(i => i.value === foundItem.value)) {\n this.selectedItems = [...this.selectedItems, foundItem];\n setTimeout(() => (this.displayValue = \"\"));\n }\n this.hideMenu();\n this.value = this.selectedItems.map(i => i.value).join(\";\");\n } else {\n // Single-select\n this.selectedItems = [foundItem];\n this.value = foundItem.value.toString();\n this.displayValue = this.selectedItems[0].label;\n this.hideMenu();\n }\n }\n\n private _handleItemUnselect(e: CustomEvent) {\n const itemEl = e.target as ComboBoxItem;\n\n const itemLabel = itemEl.textContent?.trim() ?? \"\";\n const itemValueAttr = itemEl.getAttribute(\"value\") ?? itemLabel;\n const foundItem = this.filteredMenuList.find(i => i.value.toString() === itemValueAttr) || {\n label: itemLabel,\n value: itemValueAttr\n };\n\n this.selectedItems = this.selectedItems.filter(i => i.value !== foundItem.value);\n this.value = this.selectedItems.map(i => i.value).join(\";\");\n }\n\n private async _handleBadgeDismissed(e: CustomEvent, item: SgdsComboBoxItemData) {\n e.preventDefault();\n this.selectedItems = this.selectedItems.filter(i => i.value !== item.value);\n this.value = this.selectedItems.map(i => i.value).join(\";\");\n }\n private async _handleMultiSelectKeyDown(e: KeyboardEvent) {\n // Only do this in multi-select mode\n if (!this.multiSelect) {\n return;\n }\n\n if (e.key === \"Backspace\" && this.multiSelect) {\n if (this.displayValue.trim() === \"\" && this.selectedItems.length > 0) {\n this.selectedItems = this.selectedItems.slice(0, -1);\n this.value = this.selectedItems.map(i => i.value).join(\";\");\n }\n }\n }\n protected async _handleInputBlur(e: Event) {\n e.preventDefault();\n if (this.multiSelect) {\n const displayValueMatchedSelectedItems = this.selectedItems.filter(({ label }) => this.displayValue === label);\n if (displayValueMatchedSelectedItems.length <= 0) {\n this.displayValue = \"\";\n }\n } else {\n // Single select\n if (this.selectedItems.length > 0) {\n this.displayValue = this.selectedItems[0].label;\n } else {\n this.displayValue = \"\";\n }\n }\n }\n\n /** For form reset */\n protected async _mixinResetFormControl() {\n this.value = this.defaultValue;\n if (!this.multiSelect) {\n const initialItem = this.menuList.filter(({ value }) => value === this.value);\n if (initialItem.length <= 0) {\n this.displayValue = \"\";\n } else {\n this.displayValue = initialItem[0].label;\n }\n this._mixinResetValidity(await this._input);\n } else {\n const valueArray = this.value.split(\";\");\n const initialItem = this.menuList.filter(({ value }) => valueArray.includes(value));\n this.selectedItems = initialItem;\n this._mixinResetValidity(await this._multiSelectInput);\n }\n }\n\n protected _renderMenu() {\n const emptyMenu = html` <div class=\"empty-menu\">No options</div> `;\n const menu = this._renderedMenu.map(item => {\n let isActive = false;\n if (this.multiSelect) {\n const selectedItemValueArray = this.selectedItems.map(i => i.value);\n isActive = selectedItemValueArray.includes(item.value);\n } else {\n isActive = item.value === this.value;\n }\n return html`\n <sgds-combo-box-item\n ?active=${isActive}\n ?checkbox=${this.multiSelect}\n value=${item.value}\n @sgds-select=${this._handleItemSelected}\n @sgds-unselect=${this._handleItemUnselect}\n >\n ${item.label}\n </sgds-combo-box-item>\n `;\n });\n return this._renderedMenu.length === 0 ? emptyMenu : menu;\n }\n\n protected _renderInput() {\n const wantFeedbackStyle = this.hasFeedback;\n return html`\n <div\n ${ref(this.myDropdown)}\n class=\"form-control-group ${classMap({\n disabled: this.disabled,\n readonly: this.readonly,\n \"is-invalid\": this.invalid && wantFeedbackStyle\n })}\"\n @click=${this._handleClick}\n >\n <div class=\"combobox-input-container\">\n ${this.multiSelect\n ? html`\n ${this.selectedItems.map(\n item =>\n html`<sgds-badge\n outlined\n variant=\"neutral\"\n show\n dismissible\n @sgds-hide=${e => this._handleBadgeDismissed(e, item)}\n >${item.label}</sgds-badge\n >`\n )}\n `\n : nothing}\n <input\n class=\"form-control\"\n type=\"text\"\n id=${this._controlId}\n name=${ifDefined(this.name)}\n placeholder=${ifDefined(this.placeholder)}\n aria-invalid=${this.invalid ? \"true\" : \"false\"}\n ?autofocus=${this.autofocus}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?required=${this.required}\n .value=${this.displayValue}\n @input=${this._handleInputChange}\n @blur=${this._handleInputBlur}\n aria-describedby=${ifDefined(this.invalid && this.hasFeedback ? `${this._controlId}-invalid` : undefined)}\n aria-labelledby=\"${this._labelId} ${this._controlId}Help ${this.invalid && this.hasFeedback\n ? `${this._controlId}-invalid`\n : \"\"}\"\n />\n </div>\n <sgds-icon name=\"chevron-down\" size=\"md\"></sgds-icon>\n </div>\n `;\n }\n render() {\n return html`\n <div class=\"combobox\" @keydown=${this._handleMultiSelectKeyDown}>\n ${this._renderLabel()}\n <!-- The input -->\n ${this._renderInput()} ${this._renderFeedback()}\n <ul id=${this.dropdownMenuId} class=\"dropdown-menu\" part=\"menu\" tabindex=\"-1\">\n ${this._renderMenu()}\n </ul>\n </div>\n <!-- Required an input element for constraint validation -->\n ${this.multiSelect\n ? html`<input\n .value=${live(this.value)}\n id=\"multi-select-input-tracker\"\n class=\"visually-hidden\"\n ?required=${this.required}\n />`\n : nothing}\n `;\n }\n}\n\nexport default SgdsComboBox;\n"],"names":["SelectElement","html","ref","classMap","nothing","ifDefined","live","comboBoxStyle","ComboBoxItem","SgdsIcon","SgdsBadge","__decorate","property","state","queryAsync","watch"],"mappings":"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"}
|
|
@@ -135,7 +135,8 @@ class SgdsComboBox extends SelectElement {
|
|
|
135
135
|
this.selectedItems = this.selectedItems.filter(i => i.value !== foundItem.value);
|
|
136
136
|
this.value = this.selectedItems.map(i => i.value).join(";");
|
|
137
137
|
}
|
|
138
|
-
async _handleBadgeDismissed(item) {
|
|
138
|
+
async _handleBadgeDismissed(e, item) {
|
|
139
|
+
e.preventDefault();
|
|
139
140
|
this.selectedItems = this.selectedItems.filter(i => i.value !== item.value);
|
|
140
141
|
this.value = this.selectedItems.map(i => i.value).join(";");
|
|
141
142
|
}
|
|
@@ -234,7 +235,7 @@ class SgdsComboBox extends SelectElement {
|
|
|
234
235
|
variant="neutral"
|
|
235
236
|
show
|
|
236
237
|
dismissible
|
|
237
|
-
@sgds-hide=${
|
|
238
|
+
@sgds-hide=${e => this._handleBadgeDismissed(e, item)}
|
|
238
239
|
>${item.label}</sgds-badge
|
|
239
240
|
>`)}
|
|
240
241
|
`
|