@wix/patterns 1.414.0 → 1.415.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/CardContainer/CardContainer.st.css.js +2 -2
- package/dist/cjs/components/CardContainer/CardContainer.st.css.js.map +1 -1
- package/dist/cjs/components/CmsFieldManagement/CmsFieldForm.st.css.js +3 -3
- package/dist/cjs/components/CmsFieldManagement/CmsFieldForm.st.css.js.map +1 -1
- package/dist/cjs/components/CmsFieldManagement/CmsFieldModal.st.css.js +3 -3
- package/dist/cjs/components/CmsFieldManagement/CmsFieldModal.st.css.js.map +1 -1
- package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +3 -3
- package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js.map +1 -1
- package/dist/cjs/components/CmsFieldManagement/formFields/CharactersLimitInput.st.css.js +3 -3
- package/dist/cjs/components/CmsFieldManagement/formFields/CharactersLimitInput.st.css.js.map +1 -1
- package/dist/cjs/components/Collapse/Collapse.st.css.js +3 -3
- package/dist/cjs/components/Collapse/Collapse.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
- package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +3 -3
- package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js +2 -2
- package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
- package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js +5 -5
- package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +4 -4
- package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
- package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
- package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js.map +1 -1
- package/dist/cjs/components/DragHandle/DragHandle.st.css.js +2 -2
- package/dist/cjs/components/DragHandle/DragHandle.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/EditableCell.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/EditableCell.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/date/Edit.js +2 -5
- package/dist/cjs/components/EditableTable/cellTypes/date/Edit.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/datetime/DateTimeEditWrapper.js +42 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/DateTimeEditWrapper.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.js +428 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css +44 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js +31 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.uni.driver.js +20 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.uni.driver.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/View.js +64 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/View.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css +36 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js +30 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/View.uni.driver.js +15 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/View.uni.driver.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/formatters.js +47 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/formatters.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/helpers.js +34 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/helpers.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/index.js +53 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/index.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/mergeDateTime.js +30 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/mergeDateTime.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/subCellContext.js +14 -0
- package/dist/cjs/components/EditableTable/cellTypes/datetime/subCellContext.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/index.js +3 -1
- package/dist/cjs/components/EditableTable/cellTypes/index.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js +4 -4
- package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/time/Edit.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/time/Edit.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js +4 -4
- package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js +5 -5
- package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
- package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js +2 -2
- package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
- package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
- package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
- package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
- package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
- package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
- package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
- package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
- package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
- package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
- package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
- package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
- package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
- package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
- package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
- package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
- package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
- package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
- package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
- package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +5 -5
- package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
- package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
- package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
- package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
- package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
- package/dist/cjs/components/PickerContent/PickerContent.st.css.js +2 -2
- package/dist/cjs/components/PickerContent/PickerContent.st.css.js.map +1 -1
- package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js +4 -4
- package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
- package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
- package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
- package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
- package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
- package/dist/cjs/components/SetupWidget/AllCompleteState.js +80 -0
- package/dist/cjs/components/SetupWidget/AllCompleteState.js.map +1 -0
- package/dist/cjs/components/SetupWidget/SetupStepCard.js +220 -0
- package/dist/cjs/components/SetupWidget/SetupStepCard.js.map +1 -0
- package/dist/cjs/components/SetupWidget/SetupStepGroup.js +219 -0
- package/dist/cjs/components/SetupWidget/SetupStepGroup.js.map +1 -0
- package/dist/cjs/components/SetupWidget/SetupStepIcon.js +60 -0
- package/dist/cjs/components/SetupWidget/SetupStepIcon.js.map +1 -0
- package/dist/cjs/components/SetupWidget/SetupStepRow.js +243 -0
- package/dist/cjs/components/SetupWidget/SetupStepRow.js.map +1 -0
- package/dist/cjs/components/SetupWidget/SetupWidget.js +257 -0
- package/dist/cjs/components/SetupWidget/SetupWidget.js.map +1 -0
- package/dist/cjs/components/SetupWidget/SetupWidget.st.css +95 -0
- package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js +39 -0
- package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js.map +1 -0
- package/dist/cjs/components/SetupWidget/SetupWidget.uni.driver.js +45 -0
- package/dist/cjs/components/SetupWidget/SetupWidget.uni.driver.js.map +1 -0
- package/dist/cjs/components/SetupWidget/SetupWidgetHeader.js +137 -0
- package/dist/cjs/components/SetupWidget/SetupWidgetHeader.js.map +1 -0
- package/dist/cjs/components/SetupWidget/SetupWidgetSkeleton.js +224 -0
- package/dist/cjs/components/SetupWidget/SetupWidgetSkeleton.js.map +1 -0
- package/dist/cjs/components/SetupWidget/dashboard-setup-integration-gaps.md +231 -0
- package/dist/cjs/components/SetupWidget/dashboard-setup-migration-plan.md +163 -0
- package/dist/cjs/components/SetupWidget/index.js +7 -0
- package/dist/cjs/components/SetupWidget/index.js.map +1 -0
- package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
- package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
- package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +2 -2
- package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
- package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +3 -3
- package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
- package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
- package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
- package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
- package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
- package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
- package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
- package/dist/cjs/components/common.st.css.js +4 -4
- package/dist/cjs/components/common.st.css.js.map +1 -1
- package/dist/cjs/exports/testkit/unidriver.js +3 -1
- package/dist/cjs/exports/testkit/unidriver.js.map +1 -1
- package/dist/cjs/hooks/useSetupWidget/index.js +7 -0
- package/dist/cjs/hooks/useSetupWidget/index.js.map +1 -0
- package/dist/cjs/hooks/useSetupWidget/useSetupWidget.js +33 -0
- package/dist/cjs/hooks/useSetupWidget/useSetupWidget.js.map +1 -0
- package/dist/cjs/index.js +14 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
- package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
- package/dist/cjs/state/EditableTable/types.js.map +1 -1
- package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
- package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
- package/dist/cjs/styles.global.css +2 -2
- package/dist/cjs/testkit/jsdom.js +3 -1
- package/dist/cjs/testkit/jsdom.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/docs/index.json +24 -24
- package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
- package/dist/esm/components/CmsFieldManagement/CmsFieldForm.st.css.js +2 -2
- package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js +2 -2
- package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js.map +1 -1
- package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +2 -2
- package/dist/esm/components/CmsFieldManagement/formFields/CharactersLimitInput.st.css.js +2 -2
- package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
- package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
- package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
- package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
- package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
- package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
- package/dist/esm/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
- package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
- package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
- package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
- package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
- package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
- package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
- package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
- package/dist/esm/components/DragHandle/DragHandle.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
- package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/date/Edit.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/date/Edit.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/datetime/DateTimeEditWrapper.js +26 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/DateTimeEditWrapper.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.js +289 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css +44 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js +15 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.uni.driver.js +16 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.uni.driver.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/View.js +19 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/View.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css +36 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js +15 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/View.uni.driver.js +14 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/View.uni.driver.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/formatters.js +46 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/formatters.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/helpers.js +23 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/helpers.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/index.js +48 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/index.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/mergeDateTime.js +25 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/mergeDateTime.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/subCellContext.js +8 -0
- package/dist/esm/components/EditableTable/cellTypes/datetime/subCellContext.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/index.js +3 -1
- package/dist/esm/components/EditableTable/cellTypes/index.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/time/Edit.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
- package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
- package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
- package/dist/esm/components/Fade/Fade.st.css.js +2 -2
- package/dist/esm/components/Fade/Fade.st.css.js.map +1 -1
- package/dist/esm/components/Heading/Heading.st.css.js +2 -2
- package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
- package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
- package/dist/esm/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
- package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
- package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
- package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
- package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
- package/dist/esm/components/MaxLines/MaxLines.st.css.js.map +1 -1
- package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +2 -2
- package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
- package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
- package/dist/esm/components/NestedTable/NestedTableRow.st.css.js +2 -2
- package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
- package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
- package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
- package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
- package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
- package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
- package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
- package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
- package/dist/esm/components/SetupWidget/AllCompleteState.js +19 -0
- package/dist/esm/components/SetupWidget/AllCompleteState.js.map +1 -0
- package/dist/esm/components/SetupWidget/SetupStepCard.js +61 -0
- package/dist/esm/components/SetupWidget/SetupStepCard.js.map +1 -0
- package/dist/esm/components/SetupWidget/SetupStepGroup.js +51 -0
- package/dist/esm/components/SetupWidget/SetupStepGroup.js.map +1 -0
- package/dist/esm/components/SetupWidget/SetupStepIcon.js +17 -0
- package/dist/esm/components/SetupWidget/SetupStepIcon.js.map +1 -0
- package/dist/esm/components/SetupWidget/SetupStepRow.js +68 -0
- package/dist/esm/components/SetupWidget/SetupStepRow.js.map +1 -0
- package/dist/esm/components/SetupWidget/SetupWidget.js +98 -0
- package/dist/esm/components/SetupWidget/SetupWidget.js.map +1 -0
- package/dist/esm/components/SetupWidget/SetupWidget.st.css +95 -0
- package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +15 -0
- package/dist/esm/components/SetupWidget/SetupWidget.st.css.js.map +1 -0
- package/dist/esm/components/SetupWidget/SetupWidget.uni.driver.js +40 -0
- package/dist/esm/components/SetupWidget/SetupWidget.uni.driver.js.map +1 -0
- package/dist/esm/components/SetupWidget/SetupWidgetHeader.js +30 -0
- package/dist/esm/components/SetupWidget/SetupWidgetHeader.js.map +1 -0
- package/dist/esm/components/SetupWidget/SetupWidgetSkeleton.js +44 -0
- package/dist/esm/components/SetupWidget/SetupWidgetSkeleton.js.map +1 -0
- package/dist/esm/components/SetupWidget/dashboard-setup-integration-gaps.md +231 -0
- package/dist/esm/components/SetupWidget/dashboard-setup-migration-plan.md +163 -0
- package/dist/esm/components/SetupWidget/index.js +2 -0
- package/dist/esm/components/SetupWidget/index.js.map +1 -0
- package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
- package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
- package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
- package/dist/esm/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
- package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
- package/dist/esm/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
- package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
- package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
- package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
- package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
- package/dist/esm/components/common.st.css.js +2 -2
- package/dist/esm/exports/testkit/unidriver.js +1 -0
- package/dist/esm/exports/testkit/unidriver.js.map +1 -1
- package/dist/esm/hooks/useSetupWidget/index.js +2 -0
- package/dist/esm/hooks/useSetupWidget/index.js.map +1 -0
- package/dist/esm/hooks/useSetupWidget/useSetupWidget.js +23 -0
- package/dist/esm/hooks/useSetupWidget/useSetupWidget.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
- package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
- package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
- package/dist/esm/state/FormPage/FormPageHeader.st.css.js.map +1 -1
- package/dist/esm/styles.global.css +2 -2
- package/dist/esm/testkit/jsdom.js +2 -0
- package/dist/esm/testkit/jsdom.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/components/CmsFieldManagement/CmsFieldModal.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionPageNew/CollectionPage.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionSectionHeader/CollectionSectionHeader.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionTable/CollectionTable.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionToolbar/SearchOrCustomFilter.st.css.d.ts.map +1 -1
- package/dist/types/components/DragHandle/DragHandle.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/CellViewLayout.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/date/Edit.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/datetime/DateTimeEditWrapper.d.ts +13 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/DateTimeEditWrapper.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/Edit.d.ts +4 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/Edit.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/Edit.st.css.d.ts +22 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/Edit.st.css.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/Edit.uni.driver.d.ts +21 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/Edit.uni.driver.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/View.d.ts +4 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/View.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/View.st.css.d.ts +21 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/View.st.css.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/View.uni.driver.d.ts +18 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/View.uni.driver.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/formatters.d.ts +22 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/formatters.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/helpers.d.ts +10 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/helpers.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/index.d.ts +15 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/index.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/mergeDateTime.d.ts +11 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/mergeDateTime.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/subCellContext.d.ts +12 -0
- package/dist/types/components/EditableTable/cellTypes/datetime/subCellContext.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/email/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/index.d.ts +2 -1
- package/dist/types/components/EditableTable/cellTypes/index.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/object/View.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/text/View.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/time/Edit.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/time/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/url/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EntityPage/EntityPagePlain.st.css.d.ts.map +1 -1
- package/dist/types/components/Fade/Fade.st.css.d.ts.map +1 -1
- package/dist/types/components/InputOverflow/InputOverflow.st.css.d.ts.map +1 -1
- package/dist/types/components/MaxHeightText/MaxHeightText.st.css.d.ts.map +1 -1
- package/dist/types/components/MaxLines/MaxLines.st.css.d.ts.map +1 -1
- package/dist/types/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.d.ts.map +1 -1
- package/dist/types/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.d.ts.map +1 -1
- package/dist/types/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.d.ts.map +1 -1
- package/dist/types/components/SetupWidget/AllCompleteState.d.ts +15 -0
- package/dist/types/components/SetupWidget/AllCompleteState.d.ts.map +1 -0
- package/dist/types/components/SetupWidget/SetupStepCard.d.ts +20 -0
- package/dist/types/components/SetupWidget/SetupStepCard.d.ts.map +1 -0
- package/dist/types/components/SetupWidget/SetupStepGroup.d.ts +22 -0
- package/dist/types/components/SetupWidget/SetupStepGroup.d.ts.map +1 -0
- package/dist/types/components/SetupWidget/SetupStepIcon.d.ts +10 -0
- package/dist/types/components/SetupWidget/SetupStepIcon.d.ts.map +1 -0
- package/dist/types/components/SetupWidget/SetupStepRow.d.ts +22 -0
- package/dist/types/components/SetupWidget/SetupStepRow.d.ts.map +1 -0
- package/dist/types/components/SetupWidget/SetupWidget.d.ts +47 -0
- package/dist/types/components/SetupWidget/SetupWidget.d.ts.map +1 -0
- package/dist/types/components/SetupWidget/SetupWidget.st.css.d.ts +30 -0
- package/dist/types/components/SetupWidget/SetupWidget.st.css.d.ts.map +1 -0
- package/dist/types/components/SetupWidget/SetupWidget.uni.driver.d.ts +45 -0
- package/dist/types/components/SetupWidget/SetupWidget.uni.driver.d.ts.map +1 -0
- package/dist/types/components/SetupWidget/SetupWidgetHeader.d.ts +16 -0
- package/dist/types/components/SetupWidget/SetupWidgetHeader.d.ts.map +1 -0
- package/dist/types/components/SetupWidget/SetupWidgetSkeleton.d.ts +12 -0
- package/dist/types/components/SetupWidget/SetupWidgetSkeleton.d.ts.map +1 -0
- package/dist/types/components/SetupWidget/index.d.ts +4 -0
- package/dist/types/components/SetupWidget/index.d.ts.map +1 -0
- package/dist/types/components/SkeletonCard/SkeletonCard.st.css.d.ts.map +1 -1
- package/dist/types/components/SlidingModal/SlidingModal.st.css.d.ts.map +1 -1
- package/dist/types/components/TabsFilter/TabsFilter.st.css.d.ts.map +1 -1
- package/dist/types/components/ToolbarItem/ToolbarItem.st.css.d.ts.map +1 -1
- package/dist/types/exports/testkit/unidriver.d.ts +1 -0
- package/dist/types/exports/testkit/unidriver.d.ts.map +1 -1
- package/dist/types/hooks/useSetupWidget/index.d.ts +2 -0
- package/dist/types/hooks/useSetupWidget/index.d.ts.map +1 -0
- package/dist/types/hooks/useSetupWidget/useSetupWidget.d.ts +16 -0
- package/dist/types/hooks/useSetupWidget/useSetupWidget.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/state/CollectionPage/CollectionPageHeader.st.css.d.ts.map +1 -1
- package/dist/types/state/EditableTable/types.d.ts +1 -0
- package/dist/types/state/EditableTable/types.d.ts.map +1 -1
- package/dist/types/state/FormPage/FormPageHeader.st.css.d.ts.map +1 -1
- package/dist/types/testkit/jsdom.d.ts +27 -0
- package/dist/types/testkit/jsdom.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +6 -6
- package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
- package/src/components/CmsFieldManagement/CmsFieldForm.st.css.ts +2 -2
- package/src/components/CmsFieldManagement/CmsFieldModal.st.css.ts +2 -2
- package/src/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.ts +2 -2
- package/src/components/CmsFieldManagement/formFields/CharactersLimitInput.st.css.ts +2 -2
- package/src/components/Collapse/Collapse.st.css.ts +2 -2
- package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
- package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
- package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
- package/src/components/CollectionTable/CollectionTableWSRTable.st.css.ts +2 -2
- package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
- package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
- package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
- package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
- package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
- package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
- package/src/components/EditableTable/HeaderActionsPopover.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/CellViewLayout.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/address/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/color/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/date/Edit.tsx +2 -2
- package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/datetime/DateTimeEditWrapper.tsx +36 -0
- package/src/components/EditableTable/cellTypes/datetime/Edit.st.css +44 -0
- package/src/components/EditableTable/cellTypes/datetime/Edit.st.css.ts +25 -0
- package/src/components/EditableTable/cellTypes/datetime/Edit.tsx +425 -0
- package/src/components/EditableTable/cellTypes/datetime/Edit.uni.driver.ts +19 -0
- package/src/components/EditableTable/cellTypes/datetime/View.st.css +36 -0
- package/src/components/EditableTable/cellTypes/datetime/View.st.css.ts +25 -0
- package/src/components/EditableTable/cellTypes/datetime/View.tsx +47 -0
- package/src/components/EditableTable/cellTypes/datetime/View.uni.driver.ts +16 -0
- package/src/components/EditableTable/cellTypes/datetime/formatters.ts +60 -0
- package/src/components/EditableTable/cellTypes/datetime/helpers.ts +33 -0
- package/src/components/EditableTable/cellTypes/datetime/index.ts +49 -0
- package/src/components/EditableTable/cellTypes/datetime/mergeDateTime.ts +35 -0
- package/src/components/EditableTable/cellTypes/datetime/subCellContext.ts +21 -0
- package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/email/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/index.ts +3 -0
- package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/object/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/object/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/time/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/time/Edit.tsx +5 -1
- package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
- package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
- package/src/components/Fade/Fade.st.css.ts +2 -2
- package/src/components/Heading/Heading.st.css.ts +2 -2
- package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
- package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
- package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
- package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
- package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
- package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
- package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
- package/src/components/NestedTable/NestedTableRow.st.css.ts +2 -2
- package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +2 -2
- package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +2 -2
- package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
- package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
- package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
- package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
- package/src/components/SetupWidget/AllCompleteState.tsx +46 -0
- package/src/components/SetupWidget/SetupStepCard.tsx +166 -0
- package/src/components/SetupWidget/SetupStepGroup.tsx +139 -0
- package/src/components/SetupWidget/SetupStepIcon.tsx +31 -0
- package/src/components/SetupWidget/SetupStepRow.tsx +196 -0
- package/src/components/SetupWidget/SetupWidget.st.css +95 -0
- package/src/components/SetupWidget/SetupWidget.st.css.ts +25 -0
- package/src/components/SetupWidget/SetupWidget.tsx +253 -0
- package/src/components/SetupWidget/SetupWidget.uni.driver.ts +59 -0
- package/src/components/SetupWidget/SetupWidgetHeader.tsx +64 -0
- package/src/components/SetupWidget/SetupWidgetSkeleton.tsx +98 -0
- package/src/components/SetupWidget/dashboard-setup-integration-gaps.md +231 -0
- package/src/components/SetupWidget/dashboard-setup-migration-plan.md +163 -0
- package/src/components/SetupWidget/index.ts +9 -0
- package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
- package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
- package/src/components/TabsFilter/TabsFilter.st.css.ts +2 -2
- package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
- package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
- package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
- package/src/components/common.st.css.ts +2 -2
- package/src/exports/testkit/unidriver.ts +1 -0
- package/src/hooks/useSetupWidget/index.ts +1 -0
- package/src/hooks/useSetupWidget/useSetupWidget.ts +29 -0
- package/src/index.ts +2 -0
- package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
- package/src/state/EditableTable/types.ts +1 -0
- package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
- package/src/styles.global.css +2 -2
- package/src/testkit/jsdom.ts +4 -0
- package/src/version.ts +1 -1
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
CellDateInput,
|
|
4
|
+
CellTimeInput,
|
|
5
|
+
type CellDateInputImperativeHandle,
|
|
6
|
+
dateToTime,
|
|
7
|
+
timeToDate,
|
|
8
|
+
useTranslations,
|
|
9
|
+
type Time,
|
|
10
|
+
} from '@wix/patterns-fields';
|
|
11
|
+
import type { TimeInputImperativeActions } from '@wix/design-system';
|
|
12
|
+
import type { CellEditProps } from '../../types';
|
|
13
|
+
import { useCloseOnAncestorScroll } from '../../../../hooks/useCloseOnAncestorScroll';
|
|
14
|
+
import { mergeDate, mergeTime } from './mergeDateTime';
|
|
15
|
+
import {
|
|
16
|
+
datePlaceholder,
|
|
17
|
+
formatDatePart,
|
|
18
|
+
formatTimePart,
|
|
19
|
+
timePlaceholder,
|
|
20
|
+
} from './formatters';
|
|
21
|
+
import { isValidDate, setNativeInputValue } from './helpers';
|
|
22
|
+
import { useSubCellClickTracker } from './subCellContext';
|
|
23
|
+
import { classes } from './Edit.st.css.js';
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* DateTimeEdit — 2-in-1 sub-cell editor.
|
|
27
|
+
*
|
|
28
|
+
* Single `Date | null` value rendered as two halves (date | time) with a
|
|
29
|
+
* vertical divider. Each half has its own focus + edit lifecycle, but only
|
|
30
|
+
* one sub-cell is in edit mode at a time. Commits merge the half-value back
|
|
31
|
+
* into the full `Date` before calling onChange (so the other half is
|
|
32
|
+
* preserved).
|
|
33
|
+
*
|
|
34
|
+
* The EditableTable framework has no sub-cell concept — `focusedCell` /
|
|
35
|
+
* `editingCell` are `{rowKey, columnId}` only. So sub-cell focus, intra-cell
|
|
36
|
+
* Tab interception, and date-popover focused-day capture all live here.
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
type SubEdit = 'date' | 'time';
|
|
40
|
+
|
|
41
|
+
export const DateTimeEdit: React.FC<CellEditProps<Date | null>> = ({
|
|
42
|
+
value,
|
|
43
|
+
onChange,
|
|
44
|
+
onCommit,
|
|
45
|
+
onCancel,
|
|
46
|
+
inputRef,
|
|
47
|
+
editTrigger,
|
|
48
|
+
}) => {
|
|
49
|
+
const { t } = useTranslations();
|
|
50
|
+
|
|
51
|
+
// Initial sub-cell. The View records the clicked half via
|
|
52
|
+
// `onMouseDownCapture` (capture phase, before the framework's onClick
|
|
53
|
+
// stopPropagation) into the wrapper-provided tracker; consume it once.
|
|
54
|
+
const tracker = useSubCellClickTracker();
|
|
55
|
+
const [subEdit, setSubEdit] = useState<SubEdit>(() => {
|
|
56
|
+
if (editTrigger === 'click' || editTrigger === 'doubleClick') {
|
|
57
|
+
return tracker.consume() ?? 'date';
|
|
58
|
+
}
|
|
59
|
+
return 'date';
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
const dateWrapperRef = useRef<HTMLDivElement | null>(null);
|
|
63
|
+
const timeWrapperRef = useRef<HTMLDivElement | null>(null);
|
|
64
|
+
const datePickerRef = useRef<CellDateInputImperativeHandle | null>(null);
|
|
65
|
+
const timeInputRef = useRef<TimeInputImperativeActions | null>(null);
|
|
66
|
+
// Direct refs to the underlying <input> in each half. Populated by
|
|
67
|
+
// CellDateInput / CellTimeInput via their object-ref `inputRef` prop.
|
|
68
|
+
// Used for focus, programmatic typed-key forwarding, and the "is the
|
|
69
|
+
// date input focused?" check — instead of querySelector'ing into WDS
|
|
70
|
+
// internals.
|
|
71
|
+
const dateInputElRef = useRef<HTMLInputElement | null | undefined>(null);
|
|
72
|
+
const timeInputElRef = useRef<HTMLInputElement | null | undefined>(null);
|
|
73
|
+
|
|
74
|
+
const isInsideCell = useCallback((target: EventTarget | null): boolean => {
|
|
75
|
+
if (!(target instanceof Node)) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
return Boolean(
|
|
79
|
+
dateWrapperRef.current?.contains(target) ||
|
|
80
|
+
timeWrapperRef.current?.contains(target),
|
|
81
|
+
);
|
|
82
|
+
}, []);
|
|
83
|
+
|
|
84
|
+
// Latest date from the date input (typed or picked), NOT yet committed to
|
|
85
|
+
// editingValue. WDS DateInput's `componentDidUpdate` reformats the input
|
|
86
|
+
// text on every props.value change, so calling onChange while the user is
|
|
87
|
+
// still in the date half would overwrite mid-typing input. We stash here
|
|
88
|
+
// and flush on focusout / intra-cell Tab / Escape.
|
|
89
|
+
const typedDateRef = useRef<Date | null>(null);
|
|
90
|
+
|
|
91
|
+
const onChangeRef = useRef(onChange);
|
|
92
|
+
const onCommitRef = useRef(onCommit);
|
|
93
|
+
const valueRef = useRef(value);
|
|
94
|
+
const subEditRef = useRef(subEdit);
|
|
95
|
+
onChangeRef.current = onChange;
|
|
96
|
+
onCommitRef.current = onCommit;
|
|
97
|
+
valueRef.current = value;
|
|
98
|
+
subEditRef.current = subEdit;
|
|
99
|
+
|
|
100
|
+
// Type-to-edit trigger is consumed exactly once on mount. Without this
|
|
101
|
+
// guard, both type-forwarding effects below would re-inject the typed
|
|
102
|
+
// character every time `subEdit` changes (Tab between halves), because
|
|
103
|
+
// `editTrigger` stays stable for the lifetime of the edit session.
|
|
104
|
+
const typeTriggerConsumedRef = useRef(false);
|
|
105
|
+
|
|
106
|
+
const commitTypedDate = useCallback(() => {
|
|
107
|
+
if (typedDateRef.current) {
|
|
108
|
+
onChangeRef.current(typedDateRef.current);
|
|
109
|
+
typedDateRef.current = null;
|
|
110
|
+
}
|
|
111
|
+
}, []);
|
|
112
|
+
|
|
113
|
+
const closeCalendar = useCallback(
|
|
114
|
+
() => datePickerRef.current?.closeCalendar(),
|
|
115
|
+
[],
|
|
116
|
+
);
|
|
117
|
+
useCloseOnAncestorScroll(dateWrapperRef, closeCalendar, subEdit === 'date');
|
|
118
|
+
|
|
119
|
+
const closeTimeDropdown = useCallback(() => timeInputRef.current?.blur(), []);
|
|
120
|
+
useCloseOnAncestorScroll(
|
|
121
|
+
timeWrapperRef,
|
|
122
|
+
closeTimeDropdown,
|
|
123
|
+
subEdit === 'time',
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
// Flush typed-but-not-committed date when focus leaves the date half. The
|
|
127
|
+
// gesture paths (calendar day pick, Tab/Enter on focused day, intra-cell
|
|
128
|
+
// Tab, Enter on input) flush via their own handlers; this covers external
|
|
129
|
+
// exits — clicking another cell, the toolbar, or anything else outside
|
|
130
|
+
// the date wrapper. Without it the framework's commitEdit (triggered by
|
|
131
|
+
// the focus shift to another cell) would read the stale editingValue and
|
|
132
|
+
// silently discard the user's typing.
|
|
133
|
+
useEffect(() => {
|
|
134
|
+
if (subEdit !== 'date') {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const wrapper = dateWrapperRef.current;
|
|
138
|
+
if (!wrapper) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const onFocusOut = (e: FocusEvent) => {
|
|
142
|
+
const next = e.relatedTarget as Node | null;
|
|
143
|
+
if (next && wrapper.contains(next)) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
commitTypedDate();
|
|
147
|
+
};
|
|
148
|
+
wrapper.addEventListener('focusout', onFocusOut);
|
|
149
|
+
return () => {
|
|
150
|
+
wrapper.removeEventListener('focusout', onFocusOut);
|
|
151
|
+
};
|
|
152
|
+
}, [subEdit, commitTypedDate]);
|
|
153
|
+
|
|
154
|
+
// Focus active sub-input on mount / sub-cell switch. Deferred via rAF so
|
|
155
|
+
// any in-flight click chain finishes before WDS dropdown options mount —
|
|
156
|
+
// otherwise a stray mousedown can land on a freshly-rendered option and
|
|
157
|
+
// silently commit a value the user never picked.
|
|
158
|
+
useEffect(() => {
|
|
159
|
+
if (subEdit === 'time') {
|
|
160
|
+
const raf = requestAnimationFrame(() => {
|
|
161
|
+
const input = timeInputElRef.current;
|
|
162
|
+
if (input) {
|
|
163
|
+
input.focus();
|
|
164
|
+
input.click(); // auto-open WDS TimeInput dropdown
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
return () => cancelAnimationFrame(raf);
|
|
168
|
+
}
|
|
169
|
+
const raf = requestAnimationFrame(() => {
|
|
170
|
+
datePickerRef.current?.focus();
|
|
171
|
+
});
|
|
172
|
+
return () => cancelAnimationFrame(raf);
|
|
173
|
+
}, [subEdit]);
|
|
174
|
+
|
|
175
|
+
// Type-to-edit: forward the typed character into the initial sub-cell's
|
|
176
|
+
// input. Runs once via typeTriggerConsumedRef — re-running on sub-cell
|
|
177
|
+
// switches would re-inject the digit every time the user Tabs between the
|
|
178
|
+
// date and time halves (editTrigger stays stable for the whole session).
|
|
179
|
+
useEffect(() => {
|
|
180
|
+
if (typeTriggerConsumedRef.current) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (
|
|
184
|
+
!editTrigger ||
|
|
185
|
+
typeof editTrigger !== 'object' ||
|
|
186
|
+
editTrigger.kind !== 'type'
|
|
187
|
+
) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
typeTriggerConsumedRef.current = true;
|
|
191
|
+
const key = editTrigger.key;
|
|
192
|
+
if (key.length !== 1) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const raf = requestAnimationFrame(() => {
|
|
196
|
+
if (subEditRef.current === 'date') {
|
|
197
|
+
datePickerRef.current?.openCalendar();
|
|
198
|
+
const dpInput = dateInputElRef.current;
|
|
199
|
+
if (dpInput) {
|
|
200
|
+
setNativeInputValue(dpInput, key);
|
|
201
|
+
}
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
const input = timeInputElRef.current;
|
|
205
|
+
if (input) {
|
|
206
|
+
setNativeInputValue(input, key);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
return () => cancelAnimationFrame(raf);
|
|
210
|
+
}, [editTrigger]);
|
|
211
|
+
|
|
212
|
+
// Wire inputRef to whichever sub-input is currently active.
|
|
213
|
+
useEffect(() => {
|
|
214
|
+
if (!inputRef) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
inputRef.current =
|
|
218
|
+
(subEdit === 'time' ? timeInputElRef.current : dateInputElRef.current) ??
|
|
219
|
+
undefined;
|
|
220
|
+
}, [subEdit, inputRef]);
|
|
221
|
+
|
|
222
|
+
// Intra-cell Tab (date → time, Shift+Tab time → date). Document-capture
|
|
223
|
+
// so we run BEFORE the table's useKeyboardNavigation Tab handler — the
|
|
224
|
+
// framework only sees the Tab that should actually exit the cell.
|
|
225
|
+
useEffect(() => {
|
|
226
|
+
const onKeyDownCapture = (e: KeyboardEvent) => {
|
|
227
|
+
if (e.key !== 'Tab') {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
if (!isInsideCell(e.target)) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
if (!e.shiftKey && subEditRef.current === 'date') {
|
|
235
|
+
e.preventDefault();
|
|
236
|
+
e.stopImmediatePropagation();
|
|
237
|
+
commitTypedDate();
|
|
238
|
+
setSubEdit('time');
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
if (e.shiftKey && subEditRef.current === 'time') {
|
|
242
|
+
e.preventDefault();
|
|
243
|
+
e.stopImmediatePropagation();
|
|
244
|
+
setSubEdit('date');
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
document.addEventListener('keydown', onKeyDownCapture, true);
|
|
249
|
+
return () => {
|
|
250
|
+
document.removeEventListener('keydown', onKeyDownCapture, true);
|
|
251
|
+
};
|
|
252
|
+
}, [commitTypedDate, isInsideCell]);
|
|
253
|
+
|
|
254
|
+
// Click on the inactive sub-cell switches sub-edit. pointerdown capture
|
|
255
|
+
// only: calling preventDefault on a primary pointer's pointerdown
|
|
256
|
+
// suppresses the synthesized mousedown / click that would otherwise let
|
|
257
|
+
// WDS DropdownBase.onSelect commit whichever option happens to sit under
|
|
258
|
+
// the click coords. Pair with the rAF defer on dropdown open above.
|
|
259
|
+
useEffect(() => {
|
|
260
|
+
const onPointerDown = (e: PointerEvent) => {
|
|
261
|
+
if (!isInsideCell(e.target)) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
const target = e.target as HTMLElement | null;
|
|
265
|
+
const sub = (
|
|
266
|
+
target?.closest('[data-sub-cell]') as HTMLElement | null
|
|
267
|
+
)?.getAttribute('data-sub-cell');
|
|
268
|
+
if (sub !== 'date' && sub !== 'time') {
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
if (sub === subEditRef.current) {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
e.preventDefault();
|
|
275
|
+
e.stopImmediatePropagation();
|
|
276
|
+
setSubEdit(sub as SubEdit);
|
|
277
|
+
};
|
|
278
|
+
document.addEventListener('pointerdown', onPointerDown, true);
|
|
279
|
+
return () => {
|
|
280
|
+
document.removeEventListener('pointerdown', onPointerDown, true);
|
|
281
|
+
};
|
|
282
|
+
}, [isInsideCell]);
|
|
283
|
+
|
|
284
|
+
const handleDateChange = useCallback((newDate: Date) => {
|
|
285
|
+
// Stash, don't commit — WDS DateInput reformats input text on every
|
|
286
|
+
// props.value change, clobbering mid-typing input. The focusout effect
|
|
287
|
+
// (and intra-cell Tab) flushes this to editingValue at the right moment.
|
|
288
|
+
typedDateRef.current = mergeDate(valueRef.current, newDate);
|
|
289
|
+
}, []);
|
|
290
|
+
|
|
291
|
+
const handleTimeChange = useCallback(
|
|
292
|
+
(time: Time | null) => {
|
|
293
|
+
if (!time) {
|
|
294
|
+
// Per spec: no clear on the time half. CellTimeInput's clear button
|
|
295
|
+
// is suppressed (no onClear prop). If WDS somehow emits null, no-op.
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
const asDate = timeToDate(time);
|
|
299
|
+
const merged = mergeTime(valueRef.current, asDate);
|
|
300
|
+
onChange(merged);
|
|
301
|
+
onCommit();
|
|
302
|
+
},
|
|
303
|
+
[onChange, onCommit],
|
|
304
|
+
);
|
|
305
|
+
|
|
306
|
+
// Clears the entire DateTime value. Wired to the date half's clear (X)
|
|
307
|
+
// button — the single "remove this DateTime" affordance. Time half has no
|
|
308
|
+
// clear button: there is no "date set, time null" state.
|
|
309
|
+
const handleDateClear = useCallback(() => {
|
|
310
|
+
// Drop any stashed typed date so the focusout flush doesn't restore it
|
|
311
|
+
// after we commit null.
|
|
312
|
+
typedDateRef.current = null;
|
|
313
|
+
onChange(null);
|
|
314
|
+
onCommit();
|
|
315
|
+
}, [onChange, onCommit]);
|
|
316
|
+
|
|
317
|
+
const handleEscape = useCallback(
|
|
318
|
+
(e: React.KeyboardEvent) => {
|
|
319
|
+
if (e.key === 'Escape') {
|
|
320
|
+
e.preventDefault();
|
|
321
|
+
e.stopPropagation();
|
|
322
|
+
// Cancellation drops any typed-but-stashed date. Without this, a
|
|
323
|
+
// delayed focusout (browsers fire blur asynchronously when the
|
|
324
|
+
// focused element is removed) could re-introduce the typed value
|
|
325
|
+
// after the user already pressed Escape.
|
|
326
|
+
typedDateRef.current = null;
|
|
327
|
+
onCancel();
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
[onCancel],
|
|
331
|
+
);
|
|
332
|
+
|
|
333
|
+
const validDate = isValidDate(value) ? value : null;
|
|
334
|
+
|
|
335
|
+
const timeAsString: Time | null = validDate ? dateToTime(validDate) : null;
|
|
336
|
+
|
|
337
|
+
const placeholderTokens = {
|
|
338
|
+
day: t('CMS.cellDateTime.placeholder.day'),
|
|
339
|
+
month: t('CMS.cellDateTime.placeholder.month'),
|
|
340
|
+
year: t('CMS.cellDateTime.placeholder.year'),
|
|
341
|
+
hour: t('CMS.cellDateTime.placeholder.hour'),
|
|
342
|
+
minute: t('CMS.cellDateTime.placeholder.minute'),
|
|
343
|
+
};
|
|
344
|
+
const datePh = datePlaceholder(placeholderTokens);
|
|
345
|
+
const timePh = timePlaceholder(placeholderTokens);
|
|
346
|
+
|
|
347
|
+
// Event-suppression layers in this component, by owner:
|
|
348
|
+
// 1. halfHandlers.onClick / onMouseDown (React, below)
|
|
349
|
+
// → swallow the framework's "click inside cell during edit" handling
|
|
350
|
+
// so clicks on either half don't re-trigger an edit start.
|
|
351
|
+
// 2. halfHandlers.onKeyDown = handleEscape (React, below)
|
|
352
|
+
// → cancels the edit before the framework's Escape behavior runs.
|
|
353
|
+
// 3. document keydown capture for intra-cell Tab (useEffect above)
|
|
354
|
+
// → date↔time half switch runs BEFORE the framework's Tab handler
|
|
355
|
+
// would move focus to the next column.
|
|
356
|
+
// 4. document pointerdown capture for sub-cell switch (useEffect above)
|
|
357
|
+
// → click on the inactive half switches subEdit without committing,
|
|
358
|
+
// and preventDefault suppresses the synthesized mousedown/click
|
|
359
|
+
// that would otherwise let WDS DropdownBase.onSelect commit a
|
|
360
|
+
// random option under the cursor.
|
|
361
|
+
const halfHandlers = {
|
|
362
|
+
onKeyDown: handleEscape,
|
|
363
|
+
onClick: (e: React.MouseEvent) => e.stopPropagation(),
|
|
364
|
+
onMouseDown: (e: React.MouseEvent) => e.stopPropagation(),
|
|
365
|
+
};
|
|
366
|
+
|
|
367
|
+
return (
|
|
368
|
+
<>
|
|
369
|
+
<div
|
|
370
|
+
ref={dateWrapperRef}
|
|
371
|
+
data-sub-cell="date"
|
|
372
|
+
className={classes.dateHalf}
|
|
373
|
+
{...halfHandlers}
|
|
374
|
+
>
|
|
375
|
+
{subEdit === 'date' ? (
|
|
376
|
+
<CellDateInput
|
|
377
|
+
ref={datePickerRef}
|
|
378
|
+
inputRef={dateInputElRef}
|
|
379
|
+
value={validDate}
|
|
380
|
+
onChange={handleDateChange}
|
|
381
|
+
onClear={handleDateClear}
|
|
382
|
+
placeholder={datePh}
|
|
383
|
+
ariaLabel={t('CMS.cellDateTime.ariaLabel.date')}
|
|
384
|
+
hidePrefix
|
|
385
|
+
dataHook="datetime-date-edit"
|
|
386
|
+
/>
|
|
387
|
+
) : validDate ? (
|
|
388
|
+
<span className={classes.passiveText}>
|
|
389
|
+
{formatDatePart(validDate)}
|
|
390
|
+
</span>
|
|
391
|
+
) : (
|
|
392
|
+
<span className={classes.placeholderText}>{datePh}</span>
|
|
393
|
+
)}
|
|
394
|
+
</div>
|
|
395
|
+
|
|
396
|
+
<span aria-hidden className={classes.divider} />
|
|
397
|
+
|
|
398
|
+
<div
|
|
399
|
+
ref={timeWrapperRef}
|
|
400
|
+
data-sub-cell="time"
|
|
401
|
+
className={classes.timeHalf}
|
|
402
|
+
aria-label={t('CMS.cellDateTime.ariaLabel.time')}
|
|
403
|
+
{...halfHandlers}
|
|
404
|
+
>
|
|
405
|
+
{subEdit === 'time' ? (
|
|
406
|
+
<CellTimeInput
|
|
407
|
+
ref={timeInputRef}
|
|
408
|
+
inputRef={timeInputElRef}
|
|
409
|
+
value={timeAsString}
|
|
410
|
+
onChange={handleTimeChange}
|
|
411
|
+
placeholder={timePh}
|
|
412
|
+
clearable={false}
|
|
413
|
+
dataHook="datetime-time-edit"
|
|
414
|
+
/>
|
|
415
|
+
) : validDate ? (
|
|
416
|
+
<span className={classes.passiveText}>
|
|
417
|
+
{formatTimePart(validDate)}
|
|
418
|
+
</span>
|
|
419
|
+
) : (
|
|
420
|
+
<span className={classes.placeholderText}>{timePh}</span>
|
|
421
|
+
)}
|
|
422
|
+
</div>
|
|
423
|
+
</>
|
|
424
|
+
);
|
|
425
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { UniDriver } from '@wix/wix-ui-test-utils/unidriver';
|
|
2
|
+
import { baseUniDriverFactory } from '../../../../unidriver';
|
|
3
|
+
|
|
4
|
+
export function DateTimeEditUniDriver(base: UniDriver, _body: UniDriver) {
|
|
5
|
+
const dateHalf = () => base.$('[data-sub-cell="date"]');
|
|
6
|
+
const timeHalf = () => base.$('[data-sub-cell="time"]');
|
|
7
|
+
|
|
8
|
+
return {
|
|
9
|
+
...baseUniDriverFactory(base),
|
|
10
|
+
getDateInputValue: () => dateHalf().$('input').attr('value'),
|
|
11
|
+
getTimeInputValue: () => timeHalf().$('input').attr('value'),
|
|
12
|
+
clickDateHalf: () => dateHalf().click(),
|
|
13
|
+
clickTimeHalf: () => timeHalf().click(),
|
|
14
|
+
dateHalfHasInput: () => dateHalf().$('input').exists(),
|
|
15
|
+
timeHalfHasInput: () => timeHalf().$('input').exists(),
|
|
16
|
+
hasTimeClearButton: () =>
|
|
17
|
+
timeHalf().$('[data-hook="cell-time-input-clear"]').exists(),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
@property st-global(--wds-color-text-placeholder);
|
|
2
|
+
@property st-global(--wds-color-border-standard);
|
|
3
|
+
|
|
4
|
+
.leaf {
|
|
5
|
+
min-width: 0;
|
|
6
|
+
padding: 9px 12px;
|
|
7
|
+
overflow: hidden;
|
|
8
|
+
text-overflow: ellipsis;
|
|
9
|
+
white-space: nowrap;
|
|
10
|
+
font-size: 14px;
|
|
11
|
+
line-height: 18px;
|
|
12
|
+
font-family: inherit;
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.datePart {
|
|
17
|
+
-st-extends: leaf;
|
|
18
|
+
flex: 60 1 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.timePart {
|
|
22
|
+
-st-extends: leaf;
|
|
23
|
+
flex: 40 1 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.placeholder {
|
|
27
|
+
-st-extends: leaf;
|
|
28
|
+
color: var(--wds-color-text-placeholder, #868aa5);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.divider {
|
|
32
|
+
width: 1px;
|
|
33
|
+
height: 16px;
|
|
34
|
+
background: var(--wds-color-border-standard, #dfe5eb);
|
|
35
|
+
flex-shrink: 0;
|
|
36
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
import { classesRuntime, statesRuntime } from "../../../../stylable-esm-runtime.js";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
var _namespace_ = "View3728138641";
|
|
9
|
+
var _style_ = classesRuntime.bind(null, _namespace_);
|
|
10
|
+
|
|
11
|
+
export var cssStates = statesRuntime.bind(null, _namespace_);
|
|
12
|
+
export var style = _style_;
|
|
13
|
+
export var st: import("@stylable/runtime").STFunction = _style_;
|
|
14
|
+
|
|
15
|
+
export var namespace = _namespace_;
|
|
16
|
+
export var classes = {"root":"View3728138641__root","leaf":"View3728138641__leaf","datePart":"View3728138641__datePart View3728138641__leaf","timePart":"View3728138641__timePart View3728138641__leaf","placeholder":"View3728138641__placeholder View3728138641__leaf","divider":"View3728138641__divider"};
|
|
17
|
+
export var keyframes = {};
|
|
18
|
+
export var layers = {};
|
|
19
|
+
export var containers = {};
|
|
20
|
+
export var stVars = {};
|
|
21
|
+
export var vars = {"wds-color-text-placeholder":"--wds-color-text-placeholder","wds-color-border-standard":"--wds-color-border-standard"};
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
2
|
+
import { useTranslations } from '@wix/patterns-fields';
|
|
3
|
+
import type { CellViewProps } from '../../types';
|
|
4
|
+
import { formatDatePart, formatTimePart } from './formatters';
|
|
5
|
+
import { isValidDate } from './helpers';
|
|
6
|
+
import { useSubCellClickTracker, type SubCell } from './subCellContext';
|
|
7
|
+
import { classes } from './View.st.css.js';
|
|
8
|
+
|
|
9
|
+
export const DateTimeView: React.FC<CellViewProps<Date | null>> = ({
|
|
10
|
+
value,
|
|
11
|
+
}) => {
|
|
12
|
+
const { t } = useTranslations();
|
|
13
|
+
const tracker = useSubCellClickTracker();
|
|
14
|
+
|
|
15
|
+
const recordClick = useCallback(
|
|
16
|
+
(sub: SubCell) => () => tracker.record(sub),
|
|
17
|
+
[tracker],
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
if (!isValidDate(value)) {
|
|
21
|
+
return (
|
|
22
|
+
<span className={classes.placeholder}>
|
|
23
|
+
{t('CMS.cellDateTime.placeholder')}
|
|
24
|
+
</span>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<>
|
|
30
|
+
<span
|
|
31
|
+
data-sub-cell="date"
|
|
32
|
+
className={classes.datePart}
|
|
33
|
+
onMouseDownCapture={recordClick('date')}
|
|
34
|
+
>
|
|
35
|
+
{formatDatePart(value)}
|
|
36
|
+
</span>
|
|
37
|
+
<span aria-hidden className={classes.divider} />
|
|
38
|
+
<span
|
|
39
|
+
data-sub-cell="time"
|
|
40
|
+
className={classes.timePart}
|
|
41
|
+
onMouseDownCapture={recordClick('time')}
|
|
42
|
+
>
|
|
43
|
+
{formatTimePart(value)}
|
|
44
|
+
</span>
|
|
45
|
+
</>
|
|
46
|
+
);
|
|
47
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { UniDriver } from '@wix/wix-ui-test-utils/unidriver';
|
|
2
|
+
import { baseUniDriverFactory } from '../../../../unidriver';
|
|
3
|
+
|
|
4
|
+
export function DateTimeViewUniDriver(base: UniDriver, _body: UniDriver) {
|
|
5
|
+
return {
|
|
6
|
+
...baseUniDriverFactory(base),
|
|
7
|
+
getFormattedDate: () => base.$('[data-sub-cell="date"]').text(),
|
|
8
|
+
getFormattedTime: () => base.$('[data-sub-cell="time"]').text(),
|
|
9
|
+
getPlaceholder: () => base.text(),
|
|
10
|
+
hasDivider: () =>
|
|
11
|
+
base
|
|
12
|
+
.$$('[aria-hidden]')
|
|
13
|
+
.count()
|
|
14
|
+
.then((n) => n > 0),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { isValidDate } from './helpers';
|
|
2
|
+
|
|
3
|
+
const dateFormatter = new Intl.DateTimeFormat(undefined, {
|
|
4
|
+
day: '2-digit',
|
|
5
|
+
month: '2-digit',
|
|
6
|
+
year: 'numeric',
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
const timeFormatter = new Intl.DateTimeFormat(undefined, {
|
|
10
|
+
hour: 'numeric',
|
|
11
|
+
minute: '2-digit',
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
export const formatDatePart = (value: Date | null): string =>
|
|
15
|
+
isValidDate(value) ? dateFormatter.format(value) : '';
|
|
16
|
+
|
|
17
|
+
export const formatTimePart = (value: Date | null): string =>
|
|
18
|
+
isValidDate(value) ? timeFormatter.format(value) : '';
|
|
19
|
+
|
|
20
|
+
const DATE_PLACEHOLDER_SAMPLE = new Date(2026, 0, 31);
|
|
21
|
+
const TIME_PLACEHOLDER_SAMPLE = new Date(2026, 0, 1, 13, 30);
|
|
22
|
+
|
|
23
|
+
/** Looked up via the consumer's `t()` so each token is translatable. */
|
|
24
|
+
export interface PlaceholderTokens {
|
|
25
|
+
day: string;
|
|
26
|
+
month: string;
|
|
27
|
+
year: string;
|
|
28
|
+
hour: string;
|
|
29
|
+
minute: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Derives an input placeholder from the current locale's date format by
|
|
34
|
+
* replacing each part with its translated stand-in (DD, MM, YYYY). E.g.
|
|
35
|
+
* `MM/DD/YYYY` in en-US, `DD.MM.YYYY` in de-DE, `YYYY/MM/DD` in ja-JP.
|
|
36
|
+
*/
|
|
37
|
+
export const datePlaceholder = (tokens: PlaceholderTokens): string =>
|
|
38
|
+
dateFormatter
|
|
39
|
+
.formatToParts(DATE_PLACEHOLDER_SAMPLE)
|
|
40
|
+
.map((part) => {
|
|
41
|
+
if (part.type === 'day') return tokens.day;
|
|
42
|
+
if (part.type === 'month') return tokens.month;
|
|
43
|
+
if (part.type === 'year') return tokens.year;
|
|
44
|
+
return part.value;
|
|
45
|
+
})
|
|
46
|
+
.join('');
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Derives a time input placeholder from the current locale's time format.
|
|
50
|
+
* E.g. `HH:MM AM` in en-US (12-hour) or `HH:MM` in de-DE (24-hour).
|
|
51
|
+
*/
|
|
52
|
+
export const timePlaceholder = (tokens: PlaceholderTokens): string =>
|
|
53
|
+
timeFormatter
|
|
54
|
+
.formatToParts(TIME_PLACEHOLDER_SAMPLE)
|
|
55
|
+
.map((part) => {
|
|
56
|
+
if (part.type === 'hour') return tokens.hour;
|
|
57
|
+
if (part.type === 'minute') return tokens.minute;
|
|
58
|
+
return part.value;
|
|
59
|
+
})
|
|
60
|
+
.join('');
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export const isValidDate = (d: unknown): d is Date =>
|
|
2
|
+
d instanceof Date && !isNaN(d.getTime());
|
|
3
|
+
|
|
4
|
+
export const toValidDate = (
|
|
5
|
+
value: Date | string | null | undefined,
|
|
6
|
+
): Date | null => {
|
|
7
|
+
if (value == null) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
11
|
+
return isValidDate(date) ? date : null;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Bypass React's synthetic event system to set a controlled <input>'s value
|
|
16
|
+
* AND fire an `input` event that React's listener picks up. Used for the
|
|
17
|
+
* type-to-edit gesture: forward the keystroke that triggered edit into the
|
|
18
|
+
* underlying WDS input without re-implementing its parsing.
|
|
19
|
+
*/
|
|
20
|
+
export const setNativeInputValue = (
|
|
21
|
+
el: HTMLInputElement,
|
|
22
|
+
value: string,
|
|
23
|
+
): void => {
|
|
24
|
+
const setter = Object.getOwnPropertyDescriptor(
|
|
25
|
+
HTMLInputElement.prototype,
|
|
26
|
+
'value',
|
|
27
|
+
)?.set;
|
|
28
|
+
if (!setter) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
setter.call(el, value);
|
|
32
|
+
el.dispatchEvent(new Event('input', { bubbles: true }));
|
|
33
|
+
};
|