@cryptlex/web-components 3.8.1 → 4.1.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/components/data-table/data-table-filter.es.js +178 -0
- package/dist/components/data-table/data-table-filter.es.js.map +1 -0
- package/dist/components/data-table/data-table.es.js +402 -153
- package/dist/components/data-table/data-table.es.js.map +1 -1
- package/dist/components/data-table/table-commons.es.js +267 -19
- package/dist/components/data-table/table-commons.es.js.map +1 -1
- package/dist/components/inputs/calendar.es.js +12 -12
- package/dist/components/inputs/calendar.es.js.map +1 -1
- package/dist/components/inputs/checkbox.es.js +13 -13
- package/dist/components/inputs/checkbox.es.js.map +1 -1
- package/dist/components/inputs/country-select.es.js +3 -3
- package/dist/components/inputs/country-select.es.js.map +1 -1
- package/dist/components/inputs/form-field.es.js +1 -1
- package/dist/components/inputs/input-otp.es.js +2 -2
- package/dist/components/inputs/input-otp.es.js.map +1 -1
- package/dist/components/inputs/input.es.js +7 -7
- package/dist/components/inputs/input.es.js.map +1 -1
- package/dist/components/inputs/multi-select.es.js +7 -7
- package/dist/components/inputs/multi-select.es.js.map +1 -1
- package/dist/components/inputs/radio-group.es.js +1 -1
- package/dist/components/inputs/search-input.es.js.map +1 -1
- package/dist/components/inputs/select.es.js +10 -10
- package/dist/components/inputs/select.es.js.map +1 -1
- package/dist/components/inputs/textarea.es.js +4 -4
- package/dist/components/key-value-card/key-value-card.es.js +6 -9
- package/dist/components/key-value-card/key-value-card.es.js.map +1 -1
- package/dist/components/ui/accordion.es.js +6 -6
- package/dist/components/ui/accordion.es.js.map +1 -1
- package/dist/components/ui/alert.es.js +4 -4
- package/dist/components/ui/avatar.es.js +1 -1
- package/dist/components/ui/badge.es.js +1 -1
- package/dist/components/ui/breadcrumb.es.js +2 -2
- package/dist/components/ui/breadcrumb.es.js.map +1 -1
- package/dist/components/ui/button.es.js +27 -25
- package/dist/components/ui/button.es.js.map +1 -1
- package/dist/components/ui/card.es.js +8 -8
- package/dist/components/ui/card.es.js.map +1 -1
- package/dist/components/ui/copy-button.es.js +12 -14
- package/dist/components/ui/copy-button.es.js.map +1 -1
- package/dist/components/ui/dialog.es.js +4 -4
- package/dist/components/ui/dialog.es.js.map +1 -1
- package/dist/components/ui/drawer.es.js +10 -10
- package/dist/components/ui/drawer.es.js.map +1 -1
- package/dist/components/ui/dropdown-menu.es.js +13 -13
- package/dist/components/ui/dropdown-menu.es.js.map +1 -1
- package/dist/components/ui/label.es.js +1 -1
- package/dist/components/ui/loader.es.js +3 -3
- package/dist/components/ui/pagination.es.js +2 -2
- package/dist/components/ui/pagination.es.js.map +1 -1
- package/dist/components/ui/popover.es.js +5 -5
- package/dist/components/ui/popover.es.js.map +1 -1
- package/dist/components/ui/separator.es.js +1 -1
- package/dist/components/ui/sheet.es.js +59 -55
- package/dist/components/ui/sheet.es.js.map +1 -1
- package/dist/components/ui/sidebar.es.js +105 -105
- package/dist/components/ui/sidebar.es.js.map +1 -1
- package/dist/components/ui/skeleton.es.js +1 -1
- package/dist/components/ui/static-data-table.es.js +1 -1
- package/dist/components/ui/static-data-table.es.js.map +1 -1
- package/dist/components/ui/table.es.js +8 -8
- package/dist/components/ui/table.es.js.map +1 -1
- package/dist/components/ui/tabs.es.js +1 -1
- package/dist/components/ui/tabs.es.js.map +1 -1
- package/dist/components/ui/timeline.es.js +3 -3
- package/dist/components/ui/timeline.es.js.map +1 -1
- package/dist/components/ui/tooltip.es.js +1 -1
- package/dist/index.es.d.ts +128 -32
- package/dist/index.es.js +237 -238
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@date-fns_tz@1.2.0/node_modules/@date-fns/tz/date/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@date-fns_tz@1.2.0/node_modules/@date-fns/tz/date/mini.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@date-fns_tz@1.2.0/node_modules/@date-fns/tz/tzOffset/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@floating-ui_core@1.7.2/node_modules/@floating-ui/core/dist/floating-ui.core.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@floating-ui_dom@1.7.2/node_modules/@floating-ui/dom/dist/floating-ui.dom.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@floating-ui_react-dom@2.1.4_react-dom@19.1.0_react@19.1.0/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_primitive@1.1.2/node_modules/@radix-ui/primitive/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-accordion@1.2.11_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-accordion/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-collapsible@1.1.11_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-collapsible/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-collection@1.1.7_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-collection/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-compose-refs@1.1.2_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-compose-refs/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-context@1.1.2_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-context/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-dialog@1.1.14_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-dialog/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-dismissable-layer@1.1.10_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-dismissable-layer/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-dropdown-menu@2.1.15_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-dropdown-menu/dist/index.es.js +10 -10
- package/dist/node_modules/.pnpm/@radix-ui_react-dropdown-menu@2.1.15_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-dropdown-menu/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-focus-guards@1.1.2_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-focus-guards/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-focus-scope@1.1.7_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-focus-scope/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-id@1.1.1_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-id/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-label@2.1.7_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-label/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-menu@2.1.15_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-menu/dist/index.es.js +4 -4
- package/dist/node_modules/.pnpm/@radix-ui_react-menu@2.1.15_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-menu/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-popover@1.1.14_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-popover/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-popper@1.2.7_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-popper/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-presence@1.1.4_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-presence/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-primitive@2.1.3_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-primitive/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-radio-group@1.3.7_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-radio-group/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-roving-focus@1.1.10_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-roving-focus/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-slot@1.2.3_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-slot/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-tabs@1.1.12_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-tabs/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-tooltip@1.2.7_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-tooltip/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-use-callback-ref@1.1.1_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-use-callback-ref/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-use-controllable-state@1.2.2_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-use-controllable-state/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-use-escape-keydown@1.1.1_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-use-escape-keydown/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/@radix-ui_react-use-size@1.1.1_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-use-size/dist/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/aria-hidden@1.2.6/node_modules/aria-hidden/dist/es2015/index.es.js.map +1 -1
- package/dist/node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.es.js.map +1 -1
- package/dist/node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.es.js.map +1 -1
- package/dist/node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchFn.es.js.map +1 -1
- package/dist/node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/DayPicker.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/classes/CalendarDay.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/classes/DateLib.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/components/DayButton.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/components/Nav.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getDates.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getDays.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getMonths.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/selection/useMulti.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/selection/useRange.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/selection/useSingle.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/useAnimation.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/useCalendar.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/useFocus.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/utils/addToRange.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types_react@19.1.0_react@19.1.0/node_modules/react-remove-scroll-bar/dist/es2015/component.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types_react@19.1.0_react@19.1.0/node_modules/react-remove-scroll-bar/dist/es2015/utils.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.1.0_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/Combination.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.1.0_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/SideEffect.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.1.0_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.1.0_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/handleScroll.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-style-singleton@2.2.3_@types_react@19.1.0_react@19.1.0/node_modules/react-style-singleton/dist/es2015/component.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-style-singleton@2.2.3_@types_react@19.1.0_react@19.1.0/node_modules/react-style-singleton/dist/es2015/hook.es.js.map +1 -1
- package/dist/node_modules/.pnpm/react-style-singleton@2.2.3_@types_react@19.1.0_react@19.1.0/node_modules/react-style-singleton/dist/es2015/singleton.es.js.map +1 -1
- package/dist/node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.es.js.map +1 -1
- package/dist/node_modules/.pnpm/use-callback-ref@1.3.3_@types_react@19.1.0_react@19.1.0/node_modules/use-callback-ref/dist/es2015/useMergeRef.es.js.map +1 -1
- package/dist/node_modules/.pnpm/use-callback-ref@1.3.3_@types_react@19.1.0_react@19.1.0/node_modules/use-callback-ref/dist/es2015/useRef.es.js.map +1 -1
- package/dist/node_modules/.pnpm/use-sidecar@1.1.3_@types_react@19.1.0_react@19.1.0/node_modules/use-sidecar/dist/es2015/medium.es.js.map +1 -1
- package/dist/utils/{index.es.js → primitives.es.js} +1 -1
- package/dist/utils/primitives.es.js.map +1 -0
- package/dist/{hooks → utils}/use-mobile.es.js.map +1 -1
- package/lib/theme.css +10 -12
- package/lib/tokens.css +3 -3
- package/lib/utilities.css +8 -8
- package/package.json +9 -11
- package/dist/components/data-table/column-picker.es.js +0 -50
- package/dist/components/data-table/column-picker.es.js.map +0 -1
- package/dist/components/data-table/page-size.es.js +0 -25
- package/dist/components/data-table/page-size.es.js.map +0 -1
- package/dist/components/data-table/paginator.es.js +0 -64
- package/dist/components/data-table/paginator.es.js.map +0 -1
- package/dist/components/data-table/table-actions.es.js +0 -26
- package/dist/components/data-table/table-actions.es.js.map +0 -1
- package/dist/components/data-table/table-content.es.js +0 -65
- package/dist/components/data-table/table-content.es.js.map +0 -1
- package/dist/components/data-table/table-utils/constants.es.js +0 -288
- package/dist/components/data-table/table-utils/constants.es.js.map +0 -1
- package/dist/components/data-table/table-utils/createTableFetchFn.es.js +0 -25
- package/dist/components/data-table/table-utils/createTableFetchFn.es.js.map +0 -1
- package/dist/components/data-table/table-utils/date.es.js +0 -12
- package/dist/components/data-table/table-utils/date.es.js.map +0 -1
- package/dist/components/data-table/table-utils/string.es.js +0 -19
- package/dist/components/data-table/table-utils/string.es.js.map +0 -1
- package/dist/components/data-table/table-utils/types.es.js +0 -5
- package/dist/components/data-table/table-utils/types.es.js.map +0 -1
- package/dist/utils/index.es.js.map +0 -1
- /package/dist/{hooks → utils}/use-mobile.es.js +0 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { jsx as t, jsxs as s } from "react/jsx-runtime";
|
|
2
|
+
import { useDataTable as B } from "./data-table.es.js";
|
|
3
|
+
import { getResourceDisplayName as b } from "./table-commons.es.js";
|
|
4
|
+
import { DropdownMenu as x, DropdownMenuTrigger as F } from "../../node_modules/.pnpm/@radix-ui_react-dropdown-menu@2.1.15_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-dropdown-menu/dist/index.es.js";
|
|
5
|
+
import { Popover as D, PopoverTrigger as I } from "../../node_modules/.pnpm/@radix-ui_react-popover@1.1.14_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-popover/dist/index.es.js";
|
|
6
|
+
import { Filter as M, Trash as j } from "lucide-react";
|
|
7
|
+
import { useState as O, useRef as R, useCallback as _ } from "react";
|
|
8
|
+
import { PopoverContent as S } from "../ui/popover.es.js";
|
|
9
|
+
import { DropdownMenuContent as N, DropdownMenuItem as q } from "../ui/dropdown-menu.es.js";
|
|
10
|
+
import { Input as g } from "../inputs/input.es.js";
|
|
11
|
+
import { cn as E } from "../../utils/primitives.es.js";
|
|
12
|
+
import { Button as c } from "../ui/button.es.js";
|
|
13
|
+
import { Checkbox as L } from "../inputs/checkbox.es.js";
|
|
14
|
+
const te = [
|
|
15
|
+
"eq",
|
|
16
|
+
"ne",
|
|
17
|
+
"cn",
|
|
18
|
+
"nc",
|
|
19
|
+
"sw",
|
|
20
|
+
"ew",
|
|
21
|
+
"in",
|
|
22
|
+
"nin",
|
|
23
|
+
"gt",
|
|
24
|
+
"gte",
|
|
25
|
+
"lt",
|
|
26
|
+
"lte"
|
|
27
|
+
], A = {
|
|
28
|
+
eq: "equal to",
|
|
29
|
+
ne: "not equal to",
|
|
30
|
+
cn: "contains",
|
|
31
|
+
nc: "does not contain",
|
|
32
|
+
sw: "starts with",
|
|
33
|
+
ew: "ends with",
|
|
34
|
+
in: "includes",
|
|
35
|
+
nin: "does not include",
|
|
36
|
+
gt: "greater than",
|
|
37
|
+
gte: "greater than or equal to",
|
|
38
|
+
lt: "less than",
|
|
39
|
+
lte: "less than or equal to"
|
|
40
|
+
}, k = {
|
|
41
|
+
bool: ["eq"],
|
|
42
|
+
enum: ["in", "nin"],
|
|
43
|
+
id: ["in", "nin"],
|
|
44
|
+
"id-search": ["in", "nin"],
|
|
45
|
+
string: ["eq", "ne", "cn", "nc", "sw", "ew", "in", "nin"],
|
|
46
|
+
date: ["lt", "gt"]
|
|
47
|
+
};
|
|
48
|
+
function z(d, m, h) {
|
|
49
|
+
return d.map((u, f) => f === m ? h(u) : u);
|
|
50
|
+
}
|
|
51
|
+
function ne({ className: d, ...m }) {
|
|
52
|
+
const { filters: h, query: u, setFilters: f, filterConfig: v } = B(), [p, l] = O([]);
|
|
53
|
+
R([]);
|
|
54
|
+
const y = R(null), w = _(
|
|
55
|
+
(e, i) => {
|
|
56
|
+
l(
|
|
57
|
+
(n) => z(n, e, (r) => ({ ...r, ...i }))
|
|
58
|
+
);
|
|
59
|
+
},
|
|
60
|
+
[l]
|
|
61
|
+
), P = _(
|
|
62
|
+
(e) => {
|
|
63
|
+
l((i) => i.filter((n, r) => r !== e));
|
|
64
|
+
},
|
|
65
|
+
[l]
|
|
66
|
+
);
|
|
67
|
+
function T({ id: e, filter: i, onChange: n }) {
|
|
68
|
+
const [r, a] = O(i.value);
|
|
69
|
+
switch (i.type) {
|
|
70
|
+
case "bool":
|
|
71
|
+
return /* @__PURE__ */ t(
|
|
72
|
+
L,
|
|
73
|
+
{
|
|
74
|
+
id: e,
|
|
75
|
+
checked: r,
|
|
76
|
+
onChange: (o) => a(o.target.value),
|
|
77
|
+
onBlur: (o) => n({ value: r })
|
|
78
|
+
}
|
|
79
|
+
);
|
|
80
|
+
case "date":
|
|
81
|
+
return /* @__PURE__ */ t(
|
|
82
|
+
g,
|
|
83
|
+
{
|
|
84
|
+
id: e,
|
|
85
|
+
type: "date",
|
|
86
|
+
value: r,
|
|
87
|
+
onChange: (o) => a(o.target.value),
|
|
88
|
+
onBlur: (o) => n({ value: r })
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
case "enum":
|
|
92
|
+
break;
|
|
93
|
+
case "id":
|
|
94
|
+
return /* @__PURE__ */ t(
|
|
95
|
+
g,
|
|
96
|
+
{
|
|
97
|
+
id: e,
|
|
98
|
+
type: "text",
|
|
99
|
+
value: r,
|
|
100
|
+
onChange: (o) => a(o.target.value),
|
|
101
|
+
onBlur: (o) => n({ value: r })
|
|
102
|
+
}
|
|
103
|
+
);
|
|
104
|
+
case "id-search":
|
|
105
|
+
break;
|
|
106
|
+
case "string":
|
|
107
|
+
return /* @__PURE__ */ t(
|
|
108
|
+
g,
|
|
109
|
+
{
|
|
110
|
+
id: e,
|
|
111
|
+
type: "text",
|
|
112
|
+
value: r,
|
|
113
|
+
onChange: (o) => a(o.target.value),
|
|
114
|
+
onBlur: (o) => n({ value: r })
|
|
115
|
+
}
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
const C = Object.keys(v).sort();
|
|
120
|
+
return /* @__PURE__ */ t("section", { ...m, className: E("flex gap-icon items-center", d), children: /* @__PURE__ */ s(D, { onOpenChange: (e) => {
|
|
121
|
+
var i;
|
|
122
|
+
e ? (i = y.current) == null || i.focus() : f(p.map((n) => ({ [n.property]: { [n.operator]: [n.value] } })));
|
|
123
|
+
}, children: [
|
|
124
|
+
/* @__PURE__ */ t(I, { asChild: !0, children: /* @__PURE__ */ t(c, { active: h.length > 0, disabled: u.isPending || C.length === 0, type: "button", size: "icon", variant: "neutral", icon: () => M }) }),
|
|
125
|
+
/* @__PURE__ */ s(S, { align: "end", className: "min-w-xs w-full p-icon", children: [
|
|
126
|
+
p.length > 0 && /* @__PURE__ */ t("div", { className: "flex flex-col gap-icon max-h-table overflow-auto border-y py-2", children: p.map((e, i) => {
|
|
127
|
+
const n = `${e.property}-${i}`;
|
|
128
|
+
return /* @__PURE__ */ s("div", { className: "flex gap-icon items-center justify-normal", children: [
|
|
129
|
+
/* @__PURE__ */ t("span", { className: "text-sm", children: b(e.property, "admin-portal") }),
|
|
130
|
+
/* @__PURE__ */ s(x, { children: [
|
|
131
|
+
/* @__PURE__ */ t(F, { asChild: !0, children: /* @__PURE__ */ t(c, { children: A[e.operator] }) }),
|
|
132
|
+
/* @__PURE__ */ t(N, { children: k[e.type].map((r) => /* @__PURE__ */ t(q, { onClick: (a) => w(i, { ...e, operator: r }), children: A[r] })) })
|
|
133
|
+
] }),
|
|
134
|
+
/* @__PURE__ */ t(T, { id: n, filter: e, onChange: (r) => {
|
|
135
|
+
w(i, { ...e, ...r });
|
|
136
|
+
} }, n),
|
|
137
|
+
/* @__PURE__ */ t(c, { type: "button", variant: "destructive", size: "icon", icon: () => j, onClick: () => P(i) })
|
|
138
|
+
] }, n);
|
|
139
|
+
}) }),
|
|
140
|
+
/* @__PURE__ */ s("div", { className: "flex w-full items-center justify-end gap-2 not-first:mt-icon", children: [
|
|
141
|
+
/* @__PURE__ */ s(x, { children: [
|
|
142
|
+
/* @__PURE__ */ t(F, { asChild: !0, children: /* @__PURE__ */ t(c, { ref: y, variant: "neutral", children: "Add Filter" }) }),
|
|
143
|
+
/* @__PURE__ */ t(N, { children: C.map((e) => /* @__PURE__ */ t(q, { onClick: (i) => {
|
|
144
|
+
const n = v[e].type, r = (o) => {
|
|
145
|
+
if (o === "bool")
|
|
146
|
+
return !0;
|
|
147
|
+
if (o === "string")
|
|
148
|
+
return "";
|
|
149
|
+
}, a = {
|
|
150
|
+
operator: k[n][0],
|
|
151
|
+
value: r(n),
|
|
152
|
+
type: n,
|
|
153
|
+
property: e
|
|
154
|
+
};
|
|
155
|
+
l((o) => [...o, a]);
|
|
156
|
+
}, className: "dropdown-item", role: "menuitem", children: b(e, "admin-portal") }, e)) })
|
|
157
|
+
] }),
|
|
158
|
+
p.length > 0 ? /* @__PURE__ */ t(
|
|
159
|
+
c,
|
|
160
|
+
{
|
|
161
|
+
variant: "neutral",
|
|
162
|
+
onClick: () => {
|
|
163
|
+
l([]);
|
|
164
|
+
},
|
|
165
|
+
children: "Reset filters"
|
|
166
|
+
}
|
|
167
|
+
) : null
|
|
168
|
+
] })
|
|
169
|
+
] })
|
|
170
|
+
] }) });
|
|
171
|
+
}
|
|
172
|
+
export {
|
|
173
|
+
A as COMPARISON_OPERATOR_LABELS,
|
|
174
|
+
ne as DataTableFilter,
|
|
175
|
+
te as FILTER_COMPARISON_OPERATORS,
|
|
176
|
+
z as replaceAt
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=data-table-filter.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-table-filter.es.js","sources":["../../../lib/components/data-table/data-table-filter.tsx"],"sourcesContent":["import { useDataTable, type OperationKeys } from \"@/components/data-table/data-table\";\nimport { getResourceDisplayName, type ApiFilters } from \"@/components/data-table/table-commons\";\nimport { Checkbox, Input, type MultiSelectProps } from \"@/components/inputs\";\nimport { Button, DropdownMenuContent, DropdownMenuItem, PopoverContent } from \"@/components/ui\";\nimport { cn } from \"@/utils\";\nimport { DropdownMenu, DropdownMenuTrigger } from \"@radix-ui/react-dropdown-menu\";\nimport { Popover, PopoverTrigger } from \"@radix-ui/react-popover\";\nimport { type UseQueryResult } from \"@tanstack/react-query\";\nimport { Filter, Trash } from \"lucide-react\";\nimport { useCallback, useRef, useState } from \"react\";\n\nexport const FILTER_COMPARISON_OPERATORS = [\n 'eq',\n 'ne',\n 'cn',\n 'nc',\n 'sw',\n 'ew',\n 'in',\n 'nin',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n] as const;\nexport type FilterComparisonOperator =\n (typeof FILTER_COMPARISON_OPERATORS)[number];\n\nexport const COMPARISON_OPERATOR_LABELS: Record<\n FilterComparisonOperator,\n string\n> = {\n eq: 'equal to',\n ne: 'not equal to',\n cn: 'contains',\n nc: 'does not contain',\n sw: 'starts with',\n ew: 'ends with',\n in: 'includes',\n nin: 'does not include',\n gt: 'greater than',\n gte: 'greater than or equal to',\n lt: 'less than',\n lte: 'less than or equal to',\n};\n\ntype BaseLocalFilter<T extends FilterType, V> = {\n type: T;\n property: string;\n operator: FilterComparisonOperator;\n value: V;\n displayValue?: string;\n};\ntype EnumLocalFilter = BaseLocalFilter<'enum', string[]>;\ntype IdLocalFilter = BaseLocalFilter<'id', string>;\ntype BoolLocalFilter = BaseLocalFilter<'bool', boolean>;\ntype StringLocalFilter = BaseLocalFilter<'string', string>;\ntype DateLocalFilter = BaseLocalFilter<'date', string>; // ISO date string\ntype IdSearchLocalFilter = BaseLocalFilter<'id-search', string[]>;\n\ntype LocalFilter = EnumLocalFilter\n | IdLocalFilter\n | BoolLocalFilter\n | StringLocalFilter\n | DateLocalFilter\n | IdSearchLocalFilter;\n\nexport type FilterConfig =\n // TODO, think about string[], and all the possible values we send to the backend\n | { type: 'enum'; component: React.FC<MultiSelectProps> }\n | { type: 'id' }\n | { type: 'bool' }\n | { type: 'string' }\n | { type: 'date' }\n | {\n type: 'id-search'; search: UseQueryResult<{\n id: string;\n name: string;\n }, Error>\n };\n\nexport type FilterType = FilterConfig['type'];\n\nconst FilterOperations: Record<FilterType, FilterComparisonOperator[]> = {\n 'bool': ['eq'],\n 'enum': ['in', 'nin'],\n 'id': ['in', 'nin'],\n 'id-search': ['in', 'nin'],\n 'string': ['eq', 'ne', 'cn', 'nc', 'sw', 'ew', 'in', 'nin'],\n 'date': ['lt', 'gt'],\n}\n\nexport function replaceAt<T>(\n array: readonly T[],\n index: number,\n updater: (item: T) => T\n): T[] {\n return array.map((item, i) => (i === index ? updater(item) : item));\n}\n\nexport type FiltersConfig<TOperation extends OperationKeys> = Required<Record<keyof ApiFilters<TOperation>, FilterConfig>>\ntype TableFilterProps = React.ComponentProps<'section'>;\n\nexport function DataTableFilter({ className, ...props }: TableFilterProps) {\n const { filters, query, setFilters, filterConfig } = useDataTable();\n\n\n\n const [localFilters, setLocalFilters] = useState<LocalFilter[]>([]);\n const localFilterRefs = useRef([]);\n const addFilterButtonRef = useRef<HTMLButtonElement>(null);\n\n const updateFilterAt = useCallback(\n (idx: number, change: Partial<Pick<LocalFilter, 'displayValue' | 'operator' | 'value'>>) => {\n setLocalFilters(prev =>\n replaceAt(prev, idx, f => ({ ...f, ...change }))\n );\n },\n [setLocalFilters]\n );\n\n const removeFilterAt = useCallback(\n (idx: number) => {\n setLocalFilters(prev => prev.filter((_, i) => i !== idx));\n },\n [setLocalFilters]\n );\n\n\n\n function FilterInput({ id, filter, onChange }: { id: string; filter: LocalFilter, onChange: (v: Partial<LocalFilter>) => void }) {\n const [value, setValue] = useState(filter.value);\n\n switch (filter.type) {\n case 'bool':\n return (\n <Checkbox\n id={id}\n checked={value}\n onChange={e => setValue(e.target.value)}\n onBlur={(_) => onChange({ value })}\n />\n );;\n case 'date':\n return (\n <Input\n id={id}\n type=\"date\"\n value={value}\n onChange={e => setValue(e.target.value)}\n onBlur={(_) => onChange({ value })}\n />\n );;\n case 'enum':\n break;\n // return c.component;\n case 'id':\n return (\n <Input\n id={id}\n type=\"text\"\n value={value}\n onChange={e => setValue(e.target.value)}\n onBlur={(_) => onChange({ value })}\n />\n );\n case 'id-search':\n break;\n // return (\n // <IdSearchInput\n // value={value}\n // onChange={(id) => onChange(id)}\n // />\n // );\n case 'string':\n return <Input\n id={id}\n type=\"text\"\n value={value}\n onChange={e => setValue(e.target.value)}\n onBlur={(_) => onChange({ value })}\n />;\n }\n }\n\n // More reason to hate TS https://github.com/Microsoft/TypeScript/issues/12870\n const filterKeys = Object.keys(filterConfig).sort();\n\n return (\n <section {...props} className={cn(\"flex gap-icon items-center\", className)}>\n {/* TODO, popover elevation-2, for being surface above card */}\n {/* Dropdown for properties -> Trigger popover for property specific thingy */}\n <Popover onOpenChange={(o) => {\n // Set filters when the popover closes\n if (!o) {\n // TODO, instead of generic transformation, use type based tranform()\n setFilters(localFilters.map(lf => { return { [lf.property]: { [lf.operator]: [lf.value] } } }))\n } else {\n addFilterButtonRef.current?.focus();\n }\n }}>\n <PopoverTrigger asChild>\n <Button active={filters.length > 0} disabled={query.isPending || filterKeys.length === 0} type=\"button\" size={'icon'} variant={'neutral'} icon={() => Filter} />\n </PopoverTrigger>\n {/* TODO, icon maps with dynamic imports? */}\n {/* TODO open popover with form for property specific filter */}\n {/* TODO, icons here??? */}\n <PopoverContent align=\"end\" className=\"min-w-xs w-full p-icon\">\n {/* const h3Styles = \"body mb-icon text-muted-foreground\"; */}\n {/* <h3 className={h3Styles}>{isFiltersActive ? \"Active filters\" : \"Add filters\"}</h3> */}\n {localFilters.length > 0 && <div className=\"flex flex-col gap-icon max-h-table overflow-auto border-y py-2\">\n {\n localFilters.map((lf, i) => {\n const key = `${lf.property}-${i}`;\n\n // Each of these could be a group of filters\n // For example, License is Perpetual means expiresAt==null and subscriptionStartTrigger == null OR Creation Date is Date could mean createdAt[gt]=START_OF_DAY && createdAt[lt]=END_OF_DAY \n // However, since different filters on the same property could be applied in different groups, this can cause confusion.\n // TODO Find relative, could be primitive or object.[operator].primitive\n return <div key={key} className=\"flex gap-icon items-center justify-normal\">\n <span className=\"text-sm\">{getResourceDisplayName(lf.property, 'admin-portal')}</span>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button>{COMPARISON_OPERATOR_LABELS[lf.operator]}</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {FilterOperations[lf.type].map(op => {\n return <DropdownMenuItem onClick={(_) => updateFilterAt(i, { ...lf, operator: op })}>{COMPARISON_OPERATOR_LABELS[op]}</DropdownMenuItem>\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n {/* TODO className */}\n <FilterInput key={key} id={key} filter={lf} onChange={(v) => { updateFilterAt(i, ({ ...lf, ...v })) }} />\n <Button type=\"button\" variant=\"destructive\" size=\"icon\" icon={() => Trash} onClick={() => removeFilterAt(i)}></Button>\n </div>\n })\n }\n </div>}\n <div className=\"flex w-full items-center justify-end gap-2 not-first:mt-icon\">\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n {/* TODO We ideally want to do a diff between localFilters and filters, and based on that, show a save button here. \n\t\t\t\t\t\t\t\tLook into ways in which the diffing is both complete and accurate. This can act as a debouncing mechanism for users that add more than one filter. (need more data on whether or not users add multiple filters at once) */}\n <Button ref={addFilterButtonRef} variant={'neutral'}>Add Filter</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {filterKeys.map(k => <DropdownMenuItem key={k} onClick={(_) => {\n const type = filterConfig[k].type as FilterType;\n\n const defaultValue = (t: FilterType) => {\n if (t === 'bool') {\n return true;\n } else if (t === 'string') {\n return '';\n }\n }\n\n const newFilter: LocalFilter = {\n operator: FilterOperations[type][0],\n value: defaultValue(type),\n type: type,\n property: k,\n };\n\n setLocalFilters(prev => [...prev, newFilter])\n // TODO Focus to ref\n\n }} className=\"dropdown-item\" role=\"menuitem\">{getResourceDisplayName(k, \"admin-portal\")}</DropdownMenuItem>)}\n </DropdownMenuContent>\n </DropdownMenu>\n {localFilters.length > 0 ? (\n <Button\n variant=\"neutral\"\n onClick={() => { setLocalFilters([]) }}\n >\n Reset filters\n </Button>\n ) : null}\n </div>\n {/* </> */}\n </PopoverContent>\n </Popover>\n {/* TODO render default shown filters */}\n </section>\n\n );\n};\n"],"names":["FILTER_COMPARISON_OPERATORS","COMPARISON_OPERATOR_LABELS","FilterOperations","replaceAt","array","index","updater","item","i","DataTableFilter","className","props","filters","query","setFilters","filterConfig","useDataTable","localFilters","setLocalFilters","useState","useRef","addFilterButtonRef","updateFilterAt","useCallback","idx","change","prev","f","removeFilterAt","_","FilterInput","id","filter","onChange","value","setValue","jsx","Checkbox","e","Input","filterKeys","cn","jsxs","Popover","o","_a","lf","PopoverTrigger","Button","Filter","PopoverContent","key","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","op","DropdownMenuItem","v","Trash","type","k","defaultValue","t","newFilter","getResourceDisplayName"],"mappings":"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"}
|