@gravity-ui/date-components 3.0.0-beta.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.d.ts +12 -3
- package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js +6 -15
- package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
- package/dist/cjs/components/DateField/hooks/useDateFieldState.js +5 -11
- package/dist/cjs/components/DateField/hooks/useDateFieldState.js.map +1 -1
- package/dist/cjs/components/DateField/i18n/en.json +1 -0
- package/dist/cjs/components/DateField/i18n/index.d.ts +2 -2
- package/dist/cjs/components/DateField/i18n/ru.json +1 -0
- package/dist/cjs/components/DateField/types.d.ts +9 -1
- package/dist/cjs/components/DateField/types.js.map +1 -1
- package/dist/cjs/components/DateField/utils.d.ts +22 -6
- package/dist/cjs/components/DateField/utils.js +83 -0
- package/dist/cjs/components/DateField/utils.js.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.d.ts +2 -2
- package/dist/cjs/components/DatePicker/DatePicker.js +2 -2
- package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/cjs/components/DatePicker/MobileCalendar.js +4 -4
- package/dist/cjs/components/DatePicker/MobileCalendar.js.map +1 -1
- package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.d.ts +13 -3
- package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js +17 -15
- package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
- package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js +8 -2
- package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
- package/dist/cjs/components/DatePicker/hooks/useDatePickerState.js +4 -2
- package/dist/cjs/components/DatePicker/hooks/useDatePickerState.js.map +1 -1
- package/dist/cjs/components/DatePicker/utils/getCalendarModes.d.ts +5 -0
- package/dist/cjs/components/DatePicker/utils/getCalendarModes.js +21 -0
- package/dist/cjs/components/DatePicker/utils/getCalendarModes.js.map +1 -0
- package/dist/cjs/components/DatePicker/utils/index.d.ts +1 -0
- package/dist/cjs/components/DatePicker/utils/index.js +1 -0
- package/dist/cjs/components/DatePicker/utils/index.js.map +1 -1
- package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js +8 -16
- package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js.map +1 -1
- package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js +1 -1
- package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +1 -1
- package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js +2 -2
- package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
- package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +4 -1
- package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js +11 -4
- package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
- package/dist/cjs/components/RelativeDateField/RelativeDateField.d.ts +2 -2
- package/dist/cjs/components/RelativeDateField/RelativeDateField.js +1 -1
- package/dist/cjs/components/RelativeDateField/RelativeDateField.js.map +1 -1
- package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.d.ts +2 -2
- package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js +2 -2
- package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +8 -1
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +11 -3
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +8 -7
- package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.css +0 -22
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.css.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +13 -13
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +13 -38
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.css +23 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.css.map +1 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +33 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +39 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +2 -3
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +49 -42
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.d.ts +12 -1
- package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +5 -2
- package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/i18n/index.d.ts +2 -2
- package/dist/cjs/components/RelativeRangeDatePicker/index.d.ts +2 -0
- package/dist/cjs/components/RelativeRangeDatePicker/index.js +3 -1
- package/dist/cjs/components/RelativeRangeDatePicker/index.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/types.d.ts +2 -7
- package/dist/cjs/components/RelativeRangeDatePicker/types.js.map +1 -1
- package/dist/cjs/components/index.d.ts +1 -0
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/components/types/datePicker.d.ts +11 -0
- package/dist/cjs/components/types/datePicker.js.map +1 -1
- package/dist/cjs/components/types/i18n.d.ts +17 -0
- package/dist/cjs/components/types/i18n.js +3 -0
- package/dist/cjs/components/types/i18n.js.map +1 -0
- package/dist/cjs/components/utils/dates.js +1 -1
- package/dist/cjs/components/utils/dates.js.map +1 -1
- package/dist/cjs/components/utils/validation/i18n/ru.json +3 -3
- package/dist/esm/components/DateField/hooks/useBaseDateFieldState.d.ts +12 -3
- package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js +6 -15
- package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
- package/dist/esm/components/DateField/hooks/useDateFieldState.js +6 -12
- package/dist/esm/components/DateField/hooks/useDateFieldState.js.map +1 -1
- package/dist/esm/components/DateField/i18n/en.json +1 -0
- package/dist/esm/components/DateField/i18n/index.d.ts +2 -2
- package/dist/esm/components/DateField/i18n/ru.json +1 -0
- package/dist/esm/components/DateField/types.d.ts +9 -1
- package/dist/esm/components/DateField/types.js.map +1 -1
- package/dist/esm/components/DateField/utils.d.ts +22 -6
- package/dist/esm/components/DateField/utils.js +80 -0
- package/dist/esm/components/DateField/utils.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.d.ts +2 -2
- package/dist/esm/components/DatePicker/DatePicker.js +2 -2
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/MobileCalendar.js +4 -4
- package/dist/esm/components/DatePicker/MobileCalendar.js.map +1 -1
- package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.d.ts +13 -3
- package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js +17 -15
- package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
- package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +9 -3
- package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
- package/dist/esm/components/DatePicker/hooks/useDatePickerState.js +2 -0
- package/dist/esm/components/DatePicker/hooks/useDatePickerState.js.map +1 -1
- package/dist/esm/components/DatePicker/utils/getCalendarModes.d.ts +5 -0
- package/dist/esm/components/DatePicker/utils/getCalendarModes.js +18 -0
- package/dist/esm/components/DatePicker/utils/getCalendarModes.js.map +1 -0
- package/dist/esm/components/DatePicker/utils/index.d.ts +1 -0
- package/dist/esm/components/DatePicker/utils/index.js +1 -0
- package/dist/esm/components/DatePicker/utils/index.js.map +1 -1
- package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js +9 -17
- package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js.map +1 -1
- package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js +1 -1
- package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +1 -1
- package/dist/esm/components/RangeDatePicker/RangeDatePicker.js +2 -2
- package/dist/esm/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
- package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +4 -1
- package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js +10 -3
- package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
- package/dist/esm/components/RelativeDateField/RelativeDateField.d.ts +2 -2
- package/dist/esm/components/RelativeDateField/RelativeDateField.js +1 -1
- package/dist/esm/components/RelativeDateField/RelativeDateField.js.map +1 -1
- package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.d.ts +2 -2
- package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js +2 -2
- package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +8 -1
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +11 -3
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +8 -7
- package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.css +0 -22
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.css.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +13 -13
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +15 -40
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.css +23 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.css.map +1 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +33 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +36 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +2 -3
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +49 -42
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js +2 -2
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.d.ts +12 -1
- package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +5 -3
- package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/i18n/index.d.ts +2 -2
- package/dist/esm/components/RelativeRangeDatePicker/index.d.ts +2 -0
- package/dist/esm/components/RelativeRangeDatePicker/index.js +1 -0
- package/dist/esm/components/RelativeRangeDatePicker/index.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/types.d.ts +2 -7
- package/dist/esm/components/RelativeRangeDatePicker/types.js.map +1 -1
- package/dist/esm/components/index.d.ts +1 -0
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/types/datePicker.d.ts +11 -0
- package/dist/esm/components/types/datePicker.js.map +1 -1
- package/dist/esm/components/types/i18n.d.ts +17 -0
- package/dist/esm/components/types/i18n.js +2 -0
- package/dist/esm/components/types/i18n.js.map +1 -0
- package/dist/esm/components/utils/dates.js +1 -1
- package/dist/esm/components/utils/dates.js.map +1 -1
- package/dist/esm/components/utils/validation/i18n/ru.json +3 -3
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PickerForm.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AA+Cb,gCA+FC;;AA3ID,6CAAyC;AAGzC,gDAA2C;AAC3C,6EAA+D;AAI/D,mDAA2C;AAG3C,6CAAqC;AAErC,0CAA4B;AAC5B,sGAA8F;AAE9F,4BAA2B;AAE3B,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,iCAAiC,CAAC,CAAC;AA0BnD,SAAgB,UAAU,CACtB,KAEC;;IAED,MAAM,KAAK,GAAG,IAAA,6EAAqC,EAAC,KAAK,CAAC,CAAC;IAE3D,MAAM,UAAU,GAA4B;QACxC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,mBAAmB;QACnC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,cAAc,EAAE,QAAQ;KAC3B,CAAC;IACF,MAAM,EAAC,iBAAiB,EAAC,GAAG,KAAK,CAAC;IAClC,OAAO,CACH,iCAAK,SAAS,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAC,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,aACtE,iCAAK,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,aACxB,uBAAC,uCAAkB,oBACX,UAAU,IACd,iBAAiB,EACb,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAE9E,eAAe,EAAE,CAAA,MAAA,KAAK,CAAC,eAAe,0CAAE,SAAS,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACzE,YAAY,EACR,CAAA,MAAA,MAAA,KAAK,CAAC,eAAe,0CAAE,MAAM,0CAAE,IAAI,CAAC,IAAI,CAAC,KAAI,IAAA,WAAI,EAAC,qBAAqB,CAAC,EAE5E,gBAAgB,EAAE,MAAA,KAAK,CAAC,gBAAgB,0CAAE,OAAO,CAAC,KAAK,CAAC,EACxD,KAAK,EAAE,IAAA,WAAI,EAAC,MAAM,CAAC,EACnB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAC1B,EACF,uBAAC,uCAAkB,oBACX,UAAU,IACd,iBAAiB,EACb,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAE5E,eAAe,EAAE,CAAA,MAAA,KAAK,CAAC,aAAa,0CAAE,SAAS,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACvE,YAAY,EACR,CAAA,MAAA,MAAA,KAAK,CAAC,aAAa,0CAAE,MAAM,0CAAE,IAAI,CAAC,IAAI,CAAC,KAAI,IAAA,WAAI,EAAC,qBAAqB,CAAC,EAE1E,gBAAgB,EAAE,MAAA,KAAK,CAAC,gBAAgB,0CAAE,KAAK,CAAC,KAAK,CAAC,EACtD,KAAK,EAAE,IAAA,WAAI,EAAC,IAAI,CAAC,EACjB,KAAK,EAAE,KAAK,CAAC,GAAG,EAChB,QAAQ,EAAE,KAAK,CAAC,MAAM,EACtB,OAAO,UACT,IACA,EACL,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CACxC,uBAAC,cAAM,IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,OAAO,EAAE,GAAG,EAAE;oBACV,KAAK,CAAC,UAAU,EAAE,CAAC;oBACnB,KAAK,CAAC,OAAO,EAAE,CAAC;gBACpB,CAAC,EACD,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EACrB,KAAK,EAAC,KAAK,YAEV,IAAA,WAAI,EAAC,OAAO,CAAC,GACT,CACZ,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CACpC,uBAAC,iBAAO,IACJ,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,cAAc,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;oBAC3B,KAAK,CAAC,QAAQ,CACV,EAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAC,EAChC,EAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAC,CACjC,CAAC;oBACF,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;wBACzB,KAAK,CAAC,OAAO,EAAE,CAAC;oBACpB,CAAC;gBACL,CAAC,EACD,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,GACzB,CACL,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,gCAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,uBAAC,aAAK,IACF,KAAK,EAAE,KAAK,CAAC,QAAQ,EACrB,QAAQ,EAAE,KAAK,CAAC,WAAW,EAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,IAAI,EAAE,KAAK,CAAC,IAAI,GAClB,GACA,CACT,CAAC,CAAC,CAAC,IAAI,IACN,CACT,CAAC;AACN,CAAC","sourcesContent":["'use client';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {Button} from '@gravity-ui/uikit';\nimport type {TextInputSize} from '@gravity-ui/uikit';\n\nimport {block} from '../../../../utils/cn';\nimport {RelativeDatePicker} from '../../../RelativeDatePicker';\nimport type {RelativeDatePickerProps} from '../../../RelativeDatePicker';\nimport type {DomProps, StyleProps} from '../../../types';\nimport type {RelativeRangeDatePickerStateOptions} from '../../hooks/useRelativeRangeDatePickerState';\nimport {Presets} from '../Presets/Presets';\nimport type {Preset} from '../Presets/defaultPresets';\nimport type {PresetTab} from '../Presets/utils';\nimport {Zones} from '../Zones/Zones';\n\nimport {i18n} from './i18n';\nimport {useRelativeRangeDatePickerDialogState} from './useRelativeRangeDatePickerDialogState';\n\nimport './PickerForm.scss';\n\nconst b = block('relative-range-date-picker-form');\n\nexport interface PickerFormProps extends RelativeRangeDatePickerStateOptions, DomProps, StyleProps {\n /** The size of the element */\n size?: TextInputSize;\n /**\n * Whether the values is immutable.\n * @default false\n */\n readOnly?: boolean;\n /** Format of the date when rendered in the input. [Available formats](https://day.js.org/docs/en/display/format) */\n format?: string;\n /** A placeholder date that controls the default values of each segment when the user first interacts with them. Defaults to today's date at midnight. */\n placeholderValue?: DateTime;\n /** Apply changes with button */\n withApplyButton?: boolean;\n /** Show time zone selector */\n withZonesList?: boolean;\n /** Show relative range presets */\n withPresets?: boolean;\n /** Custom preset tabs */\n presetTabs?: PresetTab[];\n /** Custom docs for presets, if empty array docs will be hidden */\n docs?: Preset[];\n}\n\nexport function PickerForm(\n props: PickerFormProps & {\n onApply: () => void;\n },\n) {\n const state = useRelativeRangeDatePickerDialogState(props);\n\n const fieldProps: RelativeDatePickerProps = {\n timeZone: state.timeZone,\n format: props.format,\n minValue: props.minValue,\n maxValue: props.maxValue,\n hasClear: props.allowNullableValues,\n readOnly: props.readOnly,\n size: props.size,\n errorPlacement: 'inside',\n };\n const {isDateUnavailable} = props;\n return (\n <div className={b({size: props.size}, props.className)} style={props.style}>\n <div className={b('pickers')}>\n <RelativeDatePicker\n {...fieldProps}\n isDateUnavailable={\n isDateUnavailable ? (date) => isDateUnavailable(date, 'start') : undefined\n }\n validationState={state.startValidation?.isInvalid ? 'invalid' : undefined}\n errorMessage={\n state.startValidation?.errors?.join('\\n') || i18n('Value is incorrect.')\n }\n placeholderValue={props.placeholderValue?.startOf('day')}\n label={i18n('From')}\n value={state.start}\n onUpdate={state.setStart}\n />\n <RelativeDatePicker\n {...fieldProps}\n isDateUnavailable={\n isDateUnavailable ? (date) => isDateUnavailable(date, 'end') : undefined\n }\n validationState={state.endValidation?.isInvalid ? 'invalid' : undefined}\n errorMessage={\n state.endValidation?.errors?.join('\\n') || i18n('Value is incorrect.')\n }\n placeholderValue={props.placeholderValue?.endOf('day')}\n label={i18n('To')}\n value={state.end}\n onUpdate={state.setEnd}\n roundUp\n />\n </div>\n {props.withApplyButton && !props.readOnly ? (\n <Button\n disabled={state.isInvalid}\n size={props.size}\n onClick={() => {\n state.applyValue();\n props.onApply();\n }}\n className={b('apply')}\n width=\"max\"\n >\n {i18n('Apply')}\n </Button>\n ) : null}\n {props.withPresets && !props.readOnly ? (\n <Presets\n size={props.size}\n presetTabs={props.presetTabs}\n onChoosePreset={(start, end) => {\n state.setRange(\n {type: 'relative', value: start},\n {type: 'relative', value: end},\n );\n if (!props.withApplyButton) {\n props.onApply();\n }\n }}\n minValue={props.minValue}\n docs={props.docs}\n className={b('presets')}\n />\n ) : null}\n {props.withZonesList ? (\n <div className={b('zone')}>\n <Zones\n value={state.timeZone}\n onUpdate={state.setTimeZone}\n disabled={props.readOnly}\n size={props.size}\n />\n </div>\n ) : null}\n </div>\n );\n}\n"]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Value } from "../../../RelativeDatePicker/index.js";
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
export declare function useRelativeRangeDatePickerDialogState(state: RelativeRangeDatePickerState, props: RelativeRangeDatePickerProps): {
|
|
2
|
+
import type { PickerFormProps } from "./PickerForm.js";
|
|
3
|
+
export declare function useRelativeRangeDatePickerDialogState(props: PickerFormProps): {
|
|
5
4
|
start: Value | null;
|
|
6
5
|
end: Value | null;
|
|
7
6
|
timeZone: string;
|
|
@@ -3,45 +3,78 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useRelativeRangeDatePickerDialogState = useRelativeRangeDatePickerDialogState;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
function useRelativeRangeDatePickerDialogState(state, props) {
|
|
6
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
|
7
|
+
const useRelativeRangeDatePickerState_1 = require("../../hooks/useRelativeRangeDatePickerState.js");
|
|
8
|
+
function useRelativeRangeDatePickerDialogState(props) {
|
|
10
9
|
var _a, _b, _c, _d;
|
|
11
|
-
const
|
|
12
|
-
const [
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
const [userTimeZone, setUserTimeZone] = (0, uikit_1.useControlledState)(props.timeZone, (_a = props.defaultTimeZone) !== null && _a !== void 0 ? _a : 'default', props.onUpdateTimeZone);
|
|
11
|
+
const [value, setValue] = (0, uikit_1.useControlledState)(props.value, (_b = props.defaultValue) !== null && _b !== void 0 ? _b : null, (v, tz) => {
|
|
12
|
+
var _a;
|
|
13
|
+
setUserTimeZone(tz);
|
|
14
|
+
if (value !== v || (value && userTimeZone !== tz)) {
|
|
15
|
+
(_a = props.onUpdate) === null || _a === void 0 ? void 0 : _a.call(props, v, tz);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
const { withApplyButton } = props;
|
|
19
|
+
const [start, setStart] = react_1.default.useState((_c = value === null || value === void 0 ? void 0 : value.start) !== null && _c !== void 0 ? _c : null);
|
|
20
|
+
const [end, setEnd] = react_1.default.useState((_d = value === null || value === void 0 ? void 0 : value.end) !== null && _d !== void 0 ? _d : null);
|
|
21
|
+
const [innerTimeZone, setTimeZone] = react_1.default.useState(userTimeZone);
|
|
22
|
+
const timeZone = withApplyButton ? innerTimeZone : userTimeZone;
|
|
23
|
+
const allowNullableValues = props.allowNullableValues;
|
|
16
24
|
function setStartValue(newValue) {
|
|
25
|
+
if (props.readOnly) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
17
28
|
setStart(newValue);
|
|
18
29
|
if (!withApplyButton) {
|
|
19
|
-
|
|
30
|
+
setValue(getRangeValue(newValue, end, Object.assign(Object.assign({}, props), { timeZone, allowNullableValues })), timeZone);
|
|
20
31
|
}
|
|
21
32
|
}
|
|
22
33
|
function setEndValue(newValue) {
|
|
34
|
+
if (props.readOnly) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
23
37
|
setEnd(newValue);
|
|
24
38
|
if (!withApplyButton) {
|
|
25
|
-
|
|
39
|
+
setValue(getRangeValue(start, newValue, Object.assign(Object.assign({}, props), { timeZone, allowNullableValues })), timeZone);
|
|
26
40
|
}
|
|
27
41
|
}
|
|
28
42
|
function setTimeZoneValue(newTimeZone) {
|
|
43
|
+
if (props.readOnly) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
29
46
|
setTimeZone(newTimeZone);
|
|
47
|
+
const newStart = start ? Object.assign({}, start) : start;
|
|
48
|
+
if ((newStart === null || newStart === void 0 ? void 0 : newStart.type) === 'absolute') {
|
|
49
|
+
newStart.value = newStart.value.timeZone(newTimeZone, true);
|
|
50
|
+
setStart(newStart);
|
|
51
|
+
}
|
|
52
|
+
const newEnd = end ? Object.assign({}, end) : end;
|
|
53
|
+
if ((newEnd === null || newEnd === void 0 ? void 0 : newEnd.type) === 'absolute') {
|
|
54
|
+
newEnd.value = newEnd.value.timeZone(newTimeZone, true);
|
|
55
|
+
setEnd(newEnd);
|
|
56
|
+
}
|
|
30
57
|
if (!withApplyButton) {
|
|
31
|
-
|
|
58
|
+
setValue(getRangeValue(newStart, newEnd, Object.assign(Object.assign({}, props), { timeZone: newTimeZone, allowNullableValues })), newTimeZone);
|
|
32
59
|
}
|
|
33
60
|
}
|
|
34
61
|
function setRange(newStart, newEnd) {
|
|
62
|
+
if (props.readOnly) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
35
65
|
setStart(newStart);
|
|
36
66
|
setEnd(newEnd);
|
|
37
67
|
if (!withApplyButton) {
|
|
38
|
-
|
|
68
|
+
setValue(getRangeValue(newStart, newEnd, Object.assign(Object.assign({}, props), { timeZone, allowNullableValues })), timeZone);
|
|
39
69
|
}
|
|
40
70
|
}
|
|
41
71
|
function applyValue() {
|
|
42
|
-
|
|
72
|
+
if (props.readOnly) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
setValue(getRangeValue(start, end, Object.assign(Object.assign({}, props), { timeZone, allowNullableValues })), timeZone);
|
|
43
76
|
}
|
|
44
|
-
const validation = react_1.default.useMemo(() => getRangeValidationResult(start, end, allowNullableValues, props.minValue, props.maxValue, props.isDateUnavailable, timeZone), [
|
|
77
|
+
const validation = react_1.default.useMemo(() => (0, useRelativeRangeDatePickerState_1.getRangeValidationResult)(start || end ? { start, end } : null, allowNullableValues, props.minValue, props.maxValue, props.isDateUnavailable, timeZone), [
|
|
45
78
|
allowNullableValues,
|
|
46
79
|
end,
|
|
47
80
|
props.isDateUnavailable,
|
|
@@ -69,36 +102,10 @@ function getRangeValue(start, end, options = {}) {
|
|
|
69
102
|
if (!start && !end) {
|
|
70
103
|
return null;
|
|
71
104
|
}
|
|
72
|
-
const { isInvalid } = getRangeValidationResult(start, end, options.allowNullableValues, options.minValue, options.maxValue, options.isDateUnavailable, (_a = options.timeZone) !== null && _a !== void 0 ? _a : 'default');
|
|
105
|
+
const { isInvalid } = (0, useRelativeRangeDatePickerState_1.getRangeValidationResult)({ start, end }, options.allowNullableValues, options.minValue, options.maxValue, options.isDateUnavailable, (_a = options.timeZone) !== null && _a !== void 0 ? _a : 'default');
|
|
73
106
|
if (isInvalid) {
|
|
74
107
|
return null;
|
|
75
108
|
}
|
|
76
109
|
return { start, end };
|
|
77
110
|
}
|
|
78
|
-
function getRangeValidationResult(start, end, allowNullableValues, minValue, maxValue, isDateUnavailable, timeZone) {
|
|
79
|
-
if (!start && !end) {
|
|
80
|
-
return { isInvalid: false };
|
|
81
|
-
}
|
|
82
|
-
const startDate = start ? (0, date_utils_1.dateTimeParse)(start.value, { timeZone }) : null;
|
|
83
|
-
const endDate = end ? (0, date_utils_1.dateTimeParse)(end.value, { timeZone, roundUp: true }) : null;
|
|
84
|
-
const startValidationResult = (0, datePicker_1.getValidationResult)(startDate, minValue, maxValue, isDateUnavailable, timeZone);
|
|
85
|
-
if (!startDate && !allowNullableValues) {
|
|
86
|
-
startValidationResult.isInvalid = true;
|
|
87
|
-
startValidationResult.errors.push((0, i18n_1.i18n)('Value is required.'));
|
|
88
|
-
}
|
|
89
|
-
const endValidationResult = (0, datePicker_1.getValidationResult)(endDate, minValue, maxValue, isDateUnavailable, timeZone);
|
|
90
|
-
if (!endDate && !allowNullableValues) {
|
|
91
|
-
endValidationResult.isInvalid = true;
|
|
92
|
-
endValidationResult.errors.push((0, i18n_1.i18n)('Value is required.'));
|
|
93
|
-
}
|
|
94
|
-
if (startDate && endDate && endDate.isBefore(startDate)) {
|
|
95
|
-
startValidationResult.isInvalid = true;
|
|
96
|
-
startValidationResult.errors.push((0, i18n_1.i18n)(`"From" can't be after "To".`));
|
|
97
|
-
}
|
|
98
|
-
return {
|
|
99
|
-
isInvalid: startValidationResult.isInvalid || endValidationResult.isInvalid,
|
|
100
|
-
startValidationResult,
|
|
101
|
-
endValidationResult,
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
111
|
//# sourceMappingURL=useRelativeRangeDatePickerDialogState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRelativeRangeDatePickerDialogState.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useRelativeRangeDatePickerDialogState.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {useControlledState} from '@gravity-ui/uikit';\n\nimport type {Value} from '../../../RelativeDatePicker';\nimport type {RangeValue} from '../../../types';\nimport {getRangeValidationResult} from '../../hooks/useRelativeRangeDatePickerState';\n\nimport type {PickerFormProps} from './PickerForm';\n\nexport function useRelativeRangeDatePickerDialogState(props: PickerFormProps) {\n const [userTimeZone, setUserTimeZone] = useControlledState(\n props.timeZone,\n props.defaultTimeZone ?? 'default',\n props.onUpdateTimeZone,\n );\n\n const [value, setValue] = useControlledState(\n props.value,\n props.defaultValue ?? null,\n (v, tz: string) => {\n setUserTimeZone(tz);\n if (value !== v || (value && userTimeZone !== tz)) {\n props.onUpdate?.(v, tz);\n }\n },\n );\n\n const {withApplyButton} = props;\n\n const [start, setStart] = React.useState<Value | null>(value?.start ?? null);\n const [end, setEnd] = React.useState<Value | null>(value?.end ?? null);\n const [innerTimeZone, setTimeZone] = React.useState(userTimeZone);\n\n const timeZone = withApplyButton ? innerTimeZone : userTimeZone;\n const allowNullableValues = props.allowNullableValues;\n\n function setStartValue(newValue: Value | null) {\n if (props.readOnly) {\n return;\n }\n setStart(newValue);\n if (!withApplyButton) {\n setValue(\n getRangeValue(newValue, end, {...props, timeZone, allowNullableValues}),\n timeZone,\n );\n }\n }\n\n function setEndValue(newValue: Value | null) {\n if (props.readOnly) {\n return;\n }\n setEnd(newValue);\n if (!withApplyButton) {\n setValue(\n getRangeValue(start, newValue, {...props, timeZone, allowNullableValues}),\n timeZone,\n );\n }\n }\n\n function setTimeZoneValue(newTimeZone: string) {\n if (props.readOnly) {\n return;\n }\n setTimeZone(newTimeZone);\n const newStart = start ? {...start} : start;\n if (newStart?.type === 'absolute') {\n newStart.value = newStart.value.timeZone(newTimeZone, true);\n setStart(newStart);\n }\n const newEnd = end ? {...end} : end;\n if (newEnd?.type === 'absolute') {\n newEnd.value = newEnd.value.timeZone(newTimeZone, true);\n setEnd(newEnd);\n }\n if (!withApplyButton) {\n setValue(\n getRangeValue(newStart, newEnd, {\n ...props,\n timeZone: newTimeZone,\n allowNullableValues,\n }),\n newTimeZone,\n );\n }\n }\n\n function setRange(newStart: Value, newEnd: Value) {\n if (props.readOnly) {\n return;\n }\n setStart(newStart);\n setEnd(newEnd);\n if (!withApplyButton) {\n setValue(\n getRangeValue(newStart, newEnd, {...props, timeZone, allowNullableValues}),\n timeZone,\n );\n }\n }\n\n function applyValue() {\n if (props.readOnly) {\n return;\n }\n setValue(getRangeValue(start, end, {...props, timeZone, allowNullableValues}), timeZone);\n }\n\n const validation = React.useMemo(\n () =>\n getRangeValidationResult(\n start || end ? {start, end} : null,\n allowNullableValues,\n props.minValue,\n props.maxValue,\n props.isDateUnavailable,\n timeZone,\n ),\n [\n allowNullableValues,\n end,\n props.isDateUnavailable,\n props.maxValue,\n props.minValue,\n start,\n timeZone,\n ],\n );\n\n return {\n start,\n end,\n timeZone,\n setStart: setStartValue,\n setEnd: setEndValue,\n setRange,\n setTimeZone: setTimeZoneValue,\n applyValue,\n isInvalid: validation.isInvalid,\n startValidation: validation.startValidationResult,\n endValidation: validation.endValidationResult,\n };\n}\n\ninterface GetRangeValueOptions {\n allowNullableValues?: boolean;\n minValue?: DateTime;\n maxValue?: DateTime;\n isDateUnavailable?: (v: DateTime, endPoint: 'start' | 'end') => boolean;\n timeZone?: string;\n}\nfunction getRangeValue(\n start: Value | null,\n end: Value | null,\n options: GetRangeValueOptions = {},\n): RangeValue<Value | null> | null {\n if (!start && !end) {\n return null;\n }\n\n const {isInvalid} = getRangeValidationResult(\n {start, end},\n options.allowNullableValues,\n options.minValue,\n options.maxValue,\n options.isDateUnavailable,\n options.timeZone ?? 'default',\n );\n\n if (isInvalid) {\n return null;\n }\n\n return {start, end};\n}\n"]}
|
|
@@ -28,7 +28,7 @@ function Presets({ className, size = 'm', minValue, withTime, onChoosePreset, pr
|
|
|
28
28
|
if (activeTab.id !== activeTabId) {
|
|
29
29
|
setActiveTab(activeTab.id);
|
|
30
30
|
}
|
|
31
|
-
return ((0, jsx_runtime_1.
|
|
31
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: b({ size }, className), children: (0, jsx_runtime_1.jsxs)(uikit_1.TabProvider, { value: activeTabId, onUpdate: setActiveTab, children: [(0, jsx_runtime_1.jsxs)("div", { className: b('tabs'), children: [(0, jsx_runtime_1.jsx)(uikit_1.TabList, { size: size === 's' ? 'm' : size, children: tabs.map(({ id, title }) => ((0, jsx_runtime_1.jsx)(uikit_1.Tab, { value: id, children: title }, id))) }), (0, jsx_runtime_1.jsx)(PresetsDoc_1.PresetsDoc, { className: b('doc'), size: size, docs: docs })] }), (0, jsx_runtime_1.jsx)(uikit_1.TabPanel, { className: b('content'), value: activeTabId, children: (0, jsx_runtime_1.jsx)(PresetsList, { presets: activeTab.presets, onChoosePreset: onChoosePreset, size: size }) })] }) }));
|
|
32
32
|
}
|
|
33
33
|
exports.SIZE_TO_ITEM_HEIGHT = {
|
|
34
34
|
s: 28,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Presets.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/Presets/Presets.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;AA2Bb,
|
|
1
|
+
{"version":3,"file":"Presets.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/Presets/Presets.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {List, Tab, TabList, TabPanel, TabProvider} from '@gravity-ui/uikit';\n\nimport {block} from '../../../../utils/cn';\n\nimport {PresetsDoc} from './PresetsDoc';\nimport type {Preset} from './defaultPresets';\nimport {filterPresetTabs, getDefaultPresetTabs} from './utils';\nimport type {PresetTab} from './utils';\n\nimport './Presets.scss';\n\nconst b = block('relative-range-date-picker-presets');\n\nexport interface PresetProps {\n className?: string;\n onChoosePreset: (start: string, end: string) => void;\n withTime?: boolean;\n minValue?: DateTime;\n size?: 's' | 'm' | 'l' | 'xl';\n presetTabs?: PresetTab[];\n docs?: Preset[];\n}\nexport function Presets({\n className,\n size = 'm',\n minValue,\n withTime,\n onChoosePreset,\n presetTabs,\n docs,\n}: PresetProps) {\n const tabs = React.useMemo(() => {\n return filterPresetTabs(presetTabs ?? getDefaultPresetTabs({withTime}), {minValue});\n }, [withTime, minValue, presetTabs]);\n\n const [activeTabId, setActiveTab] = React.useState(tabs[0]?.id);\n\n if (tabs.length === 0) {\n return null;\n }\n\n const activeTab = tabs.find((tab) => tab.id === activeTabId) ?? tabs[0];\n if (!activeTab) {\n return null;\n }\n\n if (activeTab.id !== activeTabId) {\n setActiveTab(activeTab.id);\n }\n\n return (\n <div className={b({size}, className)}>\n <TabProvider value={activeTabId} onUpdate={setActiveTab}>\n <div className={b('tabs')}>\n <TabList size={size === 's' ? 'm' : size}>\n {tabs.map(({id, title}) => (\n <Tab key={id} value={id}>\n {title}\n </Tab>\n ))}\n </TabList>\n <PresetsDoc className={b('doc')} size={size} docs={docs} />\n </div>\n <TabPanel className={b('content')} value={activeTabId}>\n <PresetsList\n presets={activeTab.presets}\n onChoosePreset={onChoosePreset}\n size={size}\n />\n </TabPanel>\n </TabProvider>\n </div>\n );\n}\nexport const SIZE_TO_ITEM_HEIGHT = {\n s: 28,\n m: 28,\n l: 32,\n xl: 36,\n};\n\ninterface PresetsListProps {\n size?: 's' | 'm' | 'l' | 'xl';\n presets: Preset[];\n onChoosePreset: (start: string, end: string) => void;\n}\nfunction PresetsList({presets, onChoosePreset, size = 'm'}: PresetsListProps) {\n const ref = React.useRef<List<Preset>>(null);\n\n React.useEffect(() => {\n const list = ref.current;\n const container = ref.current?.refContainer.current?.node as HTMLDivElement | undefined;\n if (list && container) {\n try {\n container.setAttribute('tabindex', '0');\n container.setAttribute('class', b('list-container'));\n const handleFocus = () => {\n if (list.getActiveItem() === null) {\n list.activateItem(0, true);\n }\n };\n container.addEventListener('focus', handleFocus);\n return () => {\n container.removeEventListener('focus', handleFocus);\n };\n } catch {\n // Oooops\n }\n }\n return undefined;\n }, []);\n\n return (\n <List\n ref={ref}\n className={b('list')}\n itemClassName={b('item')}\n items={presets}\n filterable={false}\n virtualized={false}\n renderItem={(item) => item.title}\n itemHeight={SIZE_TO_ITEM_HEIGHT[size]}\n onItemClick={(item) => {\n onChoosePreset(item.from, item.to);\n }}\n />\n );\n}\n"]}
|
|
@@ -50,7 +50,7 @@ function Zones(props) {
|
|
|
50
50
|
}
|
|
51
51
|
}, width: "max", renderControl: (controlProps) => {
|
|
52
52
|
const value = timeZone === 'system' || timeZone === 'default' ? (0, i18n_1.i18n)(timeZone) : timeZone;
|
|
53
|
-
return ((0, jsx_runtime_1.jsxs)(uikit_1.Button, {
|
|
53
|
+
return ((0, jsx_runtime_1.jsxs)(uikit_1.Button, { ref: controlProps.ref, onClick: controlProps.triggerProps.onClick, view: "flat-secondary", width: "max", pin: "clear-clear", size: size, disabled: props.disabled, "aria-haspopup": "listbox", "aria-expanded": controlProps.open, onKeyDown: controlProps.triggerProps.onKeyDown, className: b('control'), children: [`${value} (${(0, utils_1.getTimeZoneOffset)(timeZone)})`, (0, jsx_runtime_1.jsx)(uikit_1.Icon, { className: b('control-icon'), data: icons_1.ChevronRight, size: props.isMobile ? 20 : 16 })] }));
|
|
54
54
|
}, renderOption: ({ value, content }) => {
|
|
55
55
|
const v = content !== null && content !== void 0 ? content : value;
|
|
56
56
|
return ((0, jsx_runtime_1.jsxs)("span", { className: b('item'), children: [(0, jsx_runtime_1.jsxs)("span", { className: b('item-title'), title: value, children: [v, "\u00A0"] }), (0, jsx_runtime_1.jsx)(uikit_1.Text, { color: "secondary", children: (0, utils_1.getTimeZoneOffset)(value) })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Zones.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/Zones/Zones.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AA0Db,
|
|
1
|
+
{"version":3,"file":"Zones.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/Zones/Zones.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport {getTimeZonesList} from '@gravity-ui/date-utils';\nimport {ChevronRight} from '@gravity-ui/icons';\nimport {Button, Icon, Select, Text} from '@gravity-ui/uikit';\nimport type {SelectOption, SelectOptionGroup} from '@gravity-ui/uikit';\n\nimport {block} from '../../../../utils/cn';\nimport {getTimeZoneOffset, normalizeTimeZone} from '../../utils';\n\nimport {i18n} from './i18n';\n\nimport './Zones.scss';\n\nconst groups: Record<string, {label: string; options: SelectOption[]}> = {};\n\nconst zones = getTimeZonesList().reduce<(SelectOption | SelectOptionGroup)[]>((opts, value) => {\n const [groupName] = value.split('/');\n if (groupName) {\n let group = groups[groupName];\n if (!group) {\n group = {label: groupName, options: []};\n groups[groupName] = group;\n opts.push(group);\n }\n group.options.push({value});\n }\n return opts;\n}, []);\n\nzones.unshift({\n value: 'UTC',\n});\n\nzones.unshift({\n value: 'system',\n get content() {\n return i18n('system');\n },\n});\n\nzones.unshift({\n value: 'default',\n get content() {\n return i18n('default');\n },\n});\n\nconst b = block('relative-range-date-picker-zones');\n\nexport interface ZonesProps {\n value: string;\n onUpdate: (timeZone: string) => void;\n size?: 's' | 'm' | 'l' | 'xl';\n isMobile?: boolean;\n disabled?: boolean;\n}\n\nexport function Zones(props: ZonesProps) {\n const timeZone = normalizeTimeZone(props.value);\n const size = props.isMobile ? 'xl' : props.size;\n return (\n <Select\n disabled={props.disabled}\n value={[timeZone]}\n options={zones}\n size={size}\n onUpdate={(v) => {\n const tz = v[0];\n if (tz) {\n props.onUpdate(tz);\n }\n }}\n width=\"max\"\n renderControl={(controlProps) => {\n const value =\n timeZone === 'system' || timeZone === 'default' ? i18n(timeZone) : timeZone;\n return (\n <Button\n ref={controlProps.ref as React.Ref<HTMLButtonElement>}\n onClick={controlProps.triggerProps.onClick}\n view=\"flat-secondary\"\n width=\"max\"\n pin=\"clear-clear\"\n size={size}\n disabled={props.disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={controlProps.open}\n onKeyDown={controlProps.triggerProps.onKeyDown}\n className={b('control')}\n >\n {`${value} (${getTimeZoneOffset(timeZone)})`}\n <Icon\n className={b('control-icon')}\n data={ChevronRight}\n size={props.isMobile ? 20 : 16}\n />\n </Button>\n );\n }}\n renderOption={({value, content}) => {\n const v = content ?? value;\n return (\n <span className={b('item')}>\n <span className={b('item-title')} title={value}>\n {v} \n </span>\n <Text color=\"secondary\">{getTimeZoneOffset(value)}</Text>\n </span>\n );\n }}\n filterable\n />\n );\n}\n"]}
|
package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.d.ts
CHANGED
|
@@ -21,7 +21,18 @@ export interface RelativeRangeDatePickerStateOptions {
|
|
|
21
21
|
/** The maximum allowed date that a user may select. */
|
|
22
22
|
maxValue?: DateTime;
|
|
23
23
|
/** Callback that is called for each date of the calendar. If it returns true, then the date is unavailable. */
|
|
24
|
-
isDateUnavailable?: (date: DateTime) => boolean;
|
|
24
|
+
isDateUnavailable?: (date: DateTime, endpoint: 'start' | 'end') => boolean;
|
|
25
25
|
allowNullableValues?: boolean;
|
|
26
26
|
}
|
|
27
27
|
export declare function useRelativeRangeDatePickerState(props: RelativeRangeDatePickerStateOptions): RelativeRangeDatePickerState;
|
|
28
|
+
export declare function getRangeValidationResult(value: RelativeRangeDatePickerValue | null, allowNullableValues: boolean | undefined, minValue: DateTime | undefined, maxValue: DateTime | undefined, isDateUnavailable: ((v: DateTime, endpoint: 'start' | 'end') => boolean) | undefined, timeZone: string): {
|
|
29
|
+
isInvalid: boolean;
|
|
30
|
+
errors: never[];
|
|
31
|
+
startValidationResult?: undefined;
|
|
32
|
+
endValidationResult?: undefined;
|
|
33
|
+
} | {
|
|
34
|
+
isInvalid: boolean;
|
|
35
|
+
startValidationResult: import("../../utils/validation/datePicker.js").ValidationResult;
|
|
36
|
+
endValidationResult: import("../../utils/validation/datePicker.js").ValidationResult;
|
|
37
|
+
errors: string[];
|
|
38
|
+
};
|
package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useRelativeRangeDatePickerState = useRelativeRangeDatePickerState;
|
|
4
|
+
exports.getRangeValidationResult = getRangeValidationResult;
|
|
4
5
|
const tslib_1 = require("tslib");
|
|
5
6
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
7
|
const date_utils_1 = require("@gravity-ui/date-utils");
|
|
@@ -36,12 +37,12 @@ function getRangeValidationResult(value, allowNullableValues, minValue, maxValue
|
|
|
36
37
|
}
|
|
37
38
|
const startDate = value.start ? (0, date_utils_1.dateTimeParse)(value.start.value, { timeZone }) : null;
|
|
38
39
|
const endDate = value.end ? (0, date_utils_1.dateTimeParse)(value.end.value, { timeZone, roundUp: true }) : null;
|
|
39
|
-
const startValidationResult = (0, datePicker_1.getValidationResult)(startDate, minValue, maxValue, isDateUnavailable, timeZone, (0, i18n_1.i18n)('"From"'));
|
|
40
|
+
const startValidationResult = (0, datePicker_1.getValidationResult)(startDate, minValue, maxValue, isDateUnavailable ? (date) => isDateUnavailable(date, 'start') : undefined, timeZone, (0, i18n_1.i18n)('"From"'));
|
|
40
41
|
if (!startDate && !allowNullableValues) {
|
|
41
42
|
startValidationResult.isInvalid = true;
|
|
42
43
|
startValidationResult.errors.push((0, i18n_1.i18n)('"From" is required.'));
|
|
43
44
|
}
|
|
44
|
-
const endValidationResult = (0, datePicker_1.getValidationResult)(endDate, minValue, maxValue, isDateUnavailable, timeZone, (0, i18n_1.i18n)('"To"'));
|
|
45
|
+
const endValidationResult = (0, datePicker_1.getValidationResult)(endDate, minValue, maxValue, isDateUnavailable ? (date) => isDateUnavailable(date, 'end') : undefined, timeZone, (0, i18n_1.i18n)('"To"'));
|
|
45
46
|
if (!endDate && !allowNullableValues) {
|
|
46
47
|
endValidationResult.isInvalid = true;
|
|
47
48
|
endValidationResult.errors.push((0, i18n_1.i18n)('"To" is required.'));
|
|
@@ -52,6 +53,8 @@ function getRangeValidationResult(value, allowNullableValues, minValue, maxValue
|
|
|
52
53
|
}
|
|
53
54
|
return {
|
|
54
55
|
isInvalid: startValidationResult.isInvalid || endValidationResult.isInvalid,
|
|
56
|
+
startValidationResult,
|
|
57
|
+
endValidationResult,
|
|
55
58
|
errors: startValidationResult.errors.concat(endValidationResult.errors),
|
|
56
59
|
};
|
|
57
60
|
}
|
package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRelativeRangeDatePickerState.js","sourceRoot":"../../../../../src","sources":["components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.ts"],"names":[],"mappings":";;AAqCA,0EA2CC;;
|
|
1
|
+
{"version":3,"file":"useRelativeRangeDatePickerState.js","sourceRoot":"../../../../../src","sources":["components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {dateTimeParse} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {useControlledState} from '@gravity-ui/uikit';\n\nimport type {Value} from '../../RelativeDatePicker';\nimport type {RangeValue} from '../../types';\nimport {getValidationResult} from '../../utils/validation/datePicker';\nimport {i18n} from '../i18n';\n\nexport type RelativeRangeDatePickerValue = RangeValue<Value | null>;\n\nexport interface RelativeRangeDatePickerState {\n value: RelativeRangeDatePickerValue | null;\n timeZone: string;\n setValue: (value: RelativeRangeDatePickerValue | null, timeZone: string) => void;\n isInvalid: boolean;\n errors: string[];\n}\n\nexport interface RelativeRangeDatePickerStateOptions {\n value?: RelativeRangeDatePickerValue | null;\n defaultValue?: RelativeRangeDatePickerValue;\n onUpdate?: (value: RelativeRangeDatePickerValue | null, timeZone: string) => void;\n timeZone?: string;\n defaultTimeZone?: string;\n onUpdateTimeZone?: (timeZone: string) => void;\n /** The minimum allowed date that a user may select. */\n minValue?: DateTime;\n /** The maximum allowed date that a user may select. */\n maxValue?: DateTime;\n /** Callback that is called for each date of the calendar. If it returns true, then the date is unavailable. */\n isDateUnavailable?: (date: DateTime, endpoint: 'start' | 'end') => boolean;\n allowNullableValues?: boolean;\n}\n\nexport function useRelativeRangeDatePickerState(\n props: RelativeRangeDatePickerStateOptions,\n): RelativeRangeDatePickerState {\n const [value, setValue] = useControlledState(props.value, props.defaultValue ?? null);\n\n const [timeZone, setTimeZone] = useControlledState(\n props.timeZone,\n props.defaultTimeZone ?? 'default',\n props.onUpdateTimeZone,\n );\n\n const validation = React.useMemo(\n () =>\n getRangeValidationResult(\n value,\n props.allowNullableValues,\n props.minValue,\n props.maxValue,\n props.isDateUnavailable,\n timeZone,\n ),\n [\n value,\n props.allowNullableValues,\n props.isDateUnavailable,\n props.maxValue,\n props.minValue,\n timeZone,\n ],\n );\n\n return {\n value,\n timeZone,\n setValue(v, tz) {\n setValue(v);\n setTimeZone(tz);\n if (value !== v || (value && timeZone !== tz)) {\n props.onUpdate?.(v, tz);\n }\n },\n ...validation,\n };\n}\n\nexport function getRangeValidationResult(\n value: RelativeRangeDatePickerValue | null,\n allowNullableValues: boolean | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n isDateUnavailable: ((v: DateTime, endpoint: 'start' | 'end') => boolean) | undefined,\n timeZone: string,\n) {\n if (!value) {\n return {isInvalid: false, errors: []};\n }\n\n const startDate = value.start ? dateTimeParse(value.start.value, {timeZone}) : null;\n const endDate = value.end ? dateTimeParse(value.end.value, {timeZone, roundUp: true}) : null;\n\n const startValidationResult = getValidationResult(\n startDate,\n minValue,\n maxValue,\n isDateUnavailable ? (date) => isDateUnavailable(date, 'start') : undefined,\n timeZone,\n i18n('\"From\"'),\n );\n\n if (!startDate && !allowNullableValues) {\n startValidationResult.isInvalid = true;\n startValidationResult.errors.push(i18n('\"From\" is required.'));\n }\n\n const endValidationResult = getValidationResult(\n endDate,\n minValue,\n maxValue,\n isDateUnavailable ? (date) => isDateUnavailable(date, 'end') : undefined,\n timeZone,\n i18n('\"To\"'),\n );\n\n if (!endDate && !allowNullableValues) {\n endValidationResult.isInvalid = true;\n endValidationResult.errors.push(i18n('\"To\" is required.'));\n }\n\n if (startDate && endDate && endDate.isBefore(startDate)) {\n startValidationResult.isInvalid = true;\n startValidationResult.errors.push(i18n(`\"From\" can't be after \"To\".`));\n }\n\n return {\n isInvalid: startValidationResult.isInvalid || endValidationResult.isInvalid,\n startValidationResult,\n endValidationResult,\n errors: startValidationResult.errors.concat(endValidationResult.errors),\n };\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare const i18n: ((key: "\"From\"" | "\"From\" is required." | "\"To\"" | "\"To\" is required." | "\"From\" can't be after \"To\"."
|
|
1
|
+
export declare const i18n: ((key: "to" | "\"From\"" | "\"From\" is required." | "\"To\"" | "\"To\" is required." | "\"From\" can't be after \"To\".", params?: import("@gravity-ui/i18n").Params) => string) & {
|
|
2
2
|
keysetData: {
|
|
3
|
-
"g-date-relative-range-date-picker": Record<"\"From\"" | "\"From\" is required." | "\"To\"" | "\"To\" is required." | "\"From\" can't be after \"To\"."
|
|
3
|
+
"g-date-relative-range-date-picker": Record<"to" | "\"From\"" | "\"From\" is required." | "\"To\"" | "\"To\" is required." | "\"From\" can't be after \"To\".", import("@gravity-ui/i18n").KeyData>;
|
|
4
4
|
};
|
|
5
5
|
};
|
|
@@ -2,6 +2,8 @@ export * from "./RelativeRangeDatePicker.js";
|
|
|
2
2
|
export * from "./types.js";
|
|
3
3
|
export { PickerDialog as RelativeRangeDatePickerDialog } from "./components/PickerDialog/PickerDialog.js";
|
|
4
4
|
export type { PickerDialogProps as RelativeRangeDatePickerDialogProps } from "./components/PickerDialog/PickerDialog.js";
|
|
5
|
+
export { PickerForm as RelativeRangeDatePickerForm } from "./components/PickerDialog/PickerForm.js";
|
|
6
|
+
export type { PickerFormProps as RelativeRangeDatePickerFormProps } from "./components/PickerDialog/PickerForm.js";
|
|
5
7
|
export * from "./hooks/useRelativeRangeDatePickerState.js";
|
|
6
8
|
export { DEFAULT_DATE_PRESETS, DEFAULT_TIME_PRESETS, DEFAULT_OTHERS_PRESETS, } from "./components/Presets/defaultPresets.js";
|
|
7
9
|
export { getDefaultPresetTabs } from "./components/Presets/utils.js";
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getDefaultPresetTabs = exports.DEFAULT_OTHERS_PRESETS = exports.DEFAULT_TIME_PRESETS = exports.DEFAULT_DATE_PRESETS = exports.RelativeRangeDatePickerDialog = void 0;
|
|
3
|
+
exports.getDefaultPresetTabs = exports.DEFAULT_OTHERS_PRESETS = exports.DEFAULT_TIME_PRESETS = exports.DEFAULT_DATE_PRESETS = exports.RelativeRangeDatePickerForm = exports.RelativeRangeDatePickerDialog = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
tslib_1.__exportStar(require("./RelativeRangeDatePicker.js"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./types.js"), exports);
|
|
7
7
|
var PickerDialog_1 = require("./components/PickerDialog/PickerDialog.js");
|
|
8
8
|
Object.defineProperty(exports, "RelativeRangeDatePickerDialog", { enumerable: true, get: function () { return PickerDialog_1.PickerDialog; } });
|
|
9
|
+
var PickerForm_1 = require("./components/PickerDialog/PickerForm.js");
|
|
10
|
+
Object.defineProperty(exports, "RelativeRangeDatePickerForm", { enumerable: true, get: function () { return PickerForm_1.PickerForm; } });
|
|
9
11
|
tslib_1.__exportStar(require("./hooks/useRelativeRangeDatePickerState.js"), exports);
|
|
10
12
|
var defaultPresets_1 = require("./components/Presets/defaultPresets.js");
|
|
11
13
|
Object.defineProperty(exports, "DEFAULT_DATE_PRESETS", { enumerable: true, get: function () { return defaultPresets_1.DEFAULT_DATE_PRESETS; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["components/RelativeRangeDatePicker/index.ts"],"names":[],"mappings":";;;;AAAA,uEAA0C;AAC1C,qDAAwB;AACxB,0EAAqG;AAA7F,6HAAA,YAAY,OAAiC;AAErD,qFAAwD;AACxD,yEAI6C;AAHzC,sHAAA,oBAAoB,OAAA;AACpB,sHAAA,oBAAoB,OAAA;AACpB,wHAAA,sBAAsB,OAAA;AAE1B,uDAAgE;AAAxD,6GAAA,oBAAoB,OAAA","sourcesContent":["export * from './RelativeRangeDatePicker';\nexport * from './types';\nexport {PickerDialog as RelativeRangeDatePickerDialog} from './components/PickerDialog/PickerDialog';\nexport type {PickerDialogProps as RelativeRangeDatePickerDialogProps} from './components/PickerDialog/PickerDialog';\nexport * from './hooks/useRelativeRangeDatePickerState';\nexport {\n DEFAULT_DATE_PRESETS,\n DEFAULT_TIME_PRESETS,\n DEFAULT_OTHERS_PRESETS,\n} from './components/Presets/defaultPresets';\nexport {getDefaultPresetTabs} from './components/Presets/utils';\nexport type {Preset as RelativeRangeDatePickerPreset} from './components/Presets/defaultPresets';\nexport type {PresetTab as RelativeRangeDatePickerPresetTab} from './components/Presets/utils';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["components/RelativeRangeDatePicker/index.ts"],"names":[],"mappings":";;;;AAAA,uEAA0C;AAC1C,qDAAwB;AACxB,0EAAqG;AAA7F,6HAAA,YAAY,OAAiC;AAErD,sEAA+F;AAAvF,yHAAA,UAAU,OAA+B;AAEjD,qFAAwD;AACxD,yEAI6C;AAHzC,sHAAA,oBAAoB,OAAA;AACpB,sHAAA,oBAAoB,OAAA;AACpB,wHAAA,sBAAsB,OAAA;AAE1B,uDAAgE;AAAxD,6GAAA,oBAAoB,OAAA","sourcesContent":["export * from './RelativeRangeDatePicker';\nexport * from './types';\nexport {PickerDialog as RelativeRangeDatePickerDialog} from './components/PickerDialog/PickerDialog';\nexport type {PickerDialogProps as RelativeRangeDatePickerDialogProps} from './components/PickerDialog/PickerDialog';\nexport {PickerForm as RelativeRangeDatePickerForm} from './components/PickerDialog/PickerForm';\nexport type {PickerFormProps as RelativeRangeDatePickerFormProps} from './components/PickerDialog/PickerForm';\nexport * from './hooks/useRelativeRangeDatePickerState';\nexport {\n DEFAULT_DATE_PRESETS,\n DEFAULT_TIME_PRESETS,\n DEFAULT_OTHERS_PRESETS,\n} from './components/Presets/defaultPresets';\nexport {getDefaultPresetTabs} from './components/Presets/utils';\nexport type {Preset as RelativeRangeDatePickerPreset} from './components/Presets/defaultPresets';\nexport type {PresetTab as RelativeRangeDatePickerPresetTab} from './components/Presets/utils';\n"]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { DateTime } from '@gravity-ui/date-utils';
|
|
2
|
-
import type { PopupPlacement } from '@gravity-ui/uikit';
|
|
3
2
|
import type { Value } from "../RelativeDatePicker/index.js";
|
|
4
|
-
import type { AccessibilityProps, DomProps, FocusableProps, InputBase, InputDOMProps, RangeValue, StyleProps, TextInputProps, Validation } from "../types/index.js";
|
|
3
|
+
import type { AccessibilityProps, DomProps, FocusableProps, InputBase, InputDOMProps, PopupStyleProps, RangeValue, StyleProps, TextInputProps, Validation } from "../types/index.js";
|
|
5
4
|
import type { Preset } from "./components/Presets/defaultPresets.js";
|
|
6
5
|
import type { PresetTab } from "./components/Presets/utils.js";
|
|
7
6
|
import type { RelativeRangeDatePickerStateOptions, RelativeRangeDatePickerValue } from "./hooks/useRelativeRangeDatePickerState.js";
|
|
@@ -15,7 +14,7 @@ export interface RelativeRangeDatePickerRenderControlProps {
|
|
|
15
14
|
open: boolean;
|
|
16
15
|
triggerProps: RelativeRangeDatePickerTriggerProps;
|
|
17
16
|
}
|
|
18
|
-
export interface RelativeRangeDatePickerProps extends RelativeRangeDatePickerStateOptions, DomProps, AccessibilityProps, InputBase, InputDOMProps, TextInputProps, Validation, FocusableProps, StyleProps {
|
|
17
|
+
export interface RelativeRangeDatePickerProps extends RelativeRangeDatePickerStateOptions, DomProps, AccessibilityProps, InputBase, InputDOMProps, TextInputProps, Validation, FocusableProps, StyleProps, PopupStyleProps {
|
|
19
18
|
/** Format of the date when rendered in the input. [Available formats](https://day.js.org/docs/en/display/format) */
|
|
20
19
|
format?: string;
|
|
21
20
|
/** A placeholder date that controls the default values of each segment when the user first interacts with them. Defaults to today's date at midnight. */
|
|
@@ -34,10 +33,6 @@ export interface RelativeRangeDatePickerProps extends RelativeRangeDatePickerSta
|
|
|
34
33
|
alwaysShowAsAbsolute?: boolean;
|
|
35
34
|
/** */
|
|
36
35
|
getRangeTitle?: (value: RangeValue<Value | null> | null, timeZone: string) => string;
|
|
37
|
-
/** Sets the CSS className for the popup element. */
|
|
38
|
-
popupClassName?: string;
|
|
39
|
-
/** */
|
|
40
|
-
popupPlacement?: PopupPlacement;
|
|
41
36
|
/** Handler that is called when the popup's open state changes. */
|
|
42
37
|
onOpenChange?: (open: boolean) => void;
|
|
43
38
|
/** Used to render control. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"../../../../src","sources":["components/RelativeRangeDatePicker/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"../../../../src","sources":["components/RelativeRangeDatePicker/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {Value} from '../RelativeDatePicker';\nimport type {\n AccessibilityProps,\n DomProps,\n FocusableProps,\n InputBase,\n InputDOMProps,\n PopupStyleProps,\n RangeValue,\n StyleProps,\n TextInputProps,\n Validation,\n} from '../types';\n\nimport type {Preset} from './components/Presets/defaultPresets';\nimport type {PresetTab} from './components/Presets/utils';\nimport type {\n RelativeRangeDatePickerStateOptions,\n RelativeRangeDatePickerValue,\n} from './hooks/useRelativeRangeDatePickerState';\n\nexport type RelativeRangeDatePickerTriggerProps = Pick<\n React.AllHTMLAttributes<HTMLElement>,\n | 'id'\n | 'role'\n | 'aria-controls'\n | 'aria-haspopup'\n | 'aria-expanded'\n | 'aria-label'\n | 'aria-labelledby'\n | 'aria-describedby'\n | 'aria-details'\n | 'onClick'\n | 'onKeyDown'\n | 'disabled'\n | 'readOnly'\n>;\n\nexport interface RelativeRangeDatePickerRenderControlProps {\n ref: React.Ref<HTMLElement>;\n value: RelativeRangeDatePickerValue | null;\n title: string;\n errorMessage?: React.ReactNode;\n validationState?: 'invalid';\n open: boolean;\n triggerProps: RelativeRangeDatePickerTriggerProps;\n}\n\nexport interface RelativeRangeDatePickerProps\n extends RelativeRangeDatePickerStateOptions,\n DomProps,\n AccessibilityProps,\n InputBase,\n InputDOMProps,\n TextInputProps,\n Validation,\n FocusableProps,\n StyleProps,\n PopupStyleProps {\n /** Format of the date when rendered in the input. [Available formats](https://day.js.org/docs/en/display/format) */\n format?: string;\n /** A placeholder date that controls the default values of each segment when the user first interacts with them. Defaults to today's date at midnight. */\n placeholderValue?: DateTime;\n /** Apply changes with button */\n withApplyButton?: boolean;\n /** Show time zone selector */\n withZonesList?: boolean;\n /** Show relative range presets */\n withPresets?: boolean;\n /** Custom preset tabs */\n presetTabs?: PresetTab[];\n /** Custom docs for presets, if empty array docs will be hidden */\n docs?: Preset[];\n /** Show selected relative values as absolute dates */\n alwaysShowAsAbsolute?: boolean;\n /** */\n getRangeTitle?: (value: RangeValue<Value | null> | null, timeZone: string) => string;\n /** Handler that is called when the popup's open state changes. */\n onOpenChange?: (open: boolean) => void;\n /** Used to render control. */\n renderControl?: (props: RelativeRangeDatePickerRenderControlProps) => React.ReactElement;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["components/index.ts"],"names":[],"mappings":";;;AAAA,8DAA2B;AAC3B,mEAAgC;AAChC,+DAA4B;AAC5B,gEAA6B;AAC7B,qEAAkC;AAClC,wEAAqC;AACrC,uEAAoC;AACpC,wEAAqC;AACrC,oEAAiC;AACjC,6EAA0C","sourcesContent":["export * from './Calendar';\nexport * from './RangeCalendar';\nexport * from './DateField';\nexport * from './DatePicker';\nexport * from './RangeDatePicker';\nexport * from './RangeDateSelection';\nexport * from './RelativeDateField';\nexport * from './RelativeDatePicker';\nexport * from './RangeDateField';\nexport * from './RelativeRangeDatePicker';\n\nexport type {RangeValue} from './types';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["components/index.ts"],"names":[],"mappings":";;;AAAA,8DAA2B;AAC3B,mEAAgC;AAChC,+DAA4B;AAC5B,gEAA6B;AAC7B,qEAAkC;AAClC,wEAAqC;AACrC,uEAAoC;AACpC,wEAAqC;AACrC,oEAAiC;AACjC,6EAA0C","sourcesContent":["export * from './Calendar';\nexport * from './RangeCalendar';\nexport * from './DateField';\nexport * from './DatePicker';\nexport * from './RangeDatePicker';\nexport * from './RangeDateSelection';\nexport * from './RelativeDateField';\nexport * from './RelativeDatePicker';\nexport * from './RangeDateField';\nexport * from './RelativeRangeDatePicker';\n\nexport type {RangeValue} from './types';\n\nexport type {Keysets, PartialKeysets} from './types/i18n';\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DateTime } from '@gravity-ui/date-utils';
|
|
2
|
+
import type { CSSProperties, PopupOffset, PopupPlacement } from '@gravity-ui/uikit';
|
|
2
3
|
import type { InputBase, Validation, ValueBase } from "./inputs.js";
|
|
3
4
|
export interface DateFieldBase<T = DateTime> extends ValueBase<T | null>, InputBase, Validation {
|
|
4
5
|
/** The minimum allowed date that a user may select. */
|
|
@@ -25,3 +26,13 @@ export interface PopupTriggerProps<Args extends unknown[] = []> {
|
|
|
25
26
|
/** Handler that is called when the popup's open state changes. */
|
|
26
27
|
onOpenChange?: (open: boolean, ...args: Args) => void;
|
|
27
28
|
}
|
|
29
|
+
export interface PopupStyleProps {
|
|
30
|
+
/** Sets the CSS className for the popup element. */
|
|
31
|
+
popupClassName?: string;
|
|
32
|
+
/** Sets the CSS style attribute for the popup element. */
|
|
33
|
+
popupStyle?: CSSProperties;
|
|
34
|
+
/** Popup placement */
|
|
35
|
+
popupPlacement?: PopupPlacement;
|
|
36
|
+
/** Popup offset relative to anchor */
|
|
37
|
+
popupOffset?: PopupOffset;
|
|
38
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datePicker.js","sourceRoot":"../../../../src","sources":["components/types/datePicker.ts"],"names":[],"mappings":"","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {InputBase, Validation, ValueBase} from './inputs';\n\nexport interface DateFieldBase<T = DateTime> extends ValueBase<T | null>, InputBase, Validation {\n /** The minimum allowed date that a user may select. */\n minValue?: DateTime;\n /** The maximum allowed date that a user may select. */\n maxValue?: DateTime;\n /** Callback that is called for each date of the calendar. If it returns true, then the date is unavailable. */\n isDateUnavailable?: (date: DateTime) => boolean;\n /** Format of the date when rendered in the input. [Available formats](https://day.js.org/docs/en/display/format) */\n format?: string;\n /** A placeholder date that controls the default values of each segment when the user first interacts with them. Defaults to today's date at midnight. */\n placeholderValue?: DateTime;\n /**\n * Which timezone use to show values. Example: 'default', 'system', 'Europe/Amsterdam'.\n * @default The timezone of the `value` or `defaultValue` or `placeholderValue`, 'default' otherwise.\n */\n timeZone?: string;\n}\n\nexport interface PopupTriggerProps<Args extends unknown[] = []> {\n /** Whether the popup is open (controlled). */\n open?: boolean;\n /** Whether the popup is open by default (uncontrolled). */\n defaultOpen?: boolean;\n /** Handler that is called when the popup's open state changes. */\n onOpenChange?: (open: boolean, ...args: Args) => void;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"datePicker.js","sourceRoot":"../../../../src","sources":["components/types/datePicker.ts"],"names":[],"mappings":"","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\nimport type {CSSProperties, PopupOffset, PopupPlacement} from '@gravity-ui/uikit';\n\nimport type {InputBase, Validation, ValueBase} from './inputs';\n\nexport interface DateFieldBase<T = DateTime> extends ValueBase<T | null>, InputBase, Validation {\n /** The minimum allowed date that a user may select. */\n minValue?: DateTime;\n /** The maximum allowed date that a user may select. */\n maxValue?: DateTime;\n /** Callback that is called for each date of the calendar. If it returns true, then the date is unavailable. */\n isDateUnavailable?: (date: DateTime) => boolean;\n /** Format of the date when rendered in the input. [Available formats](https://day.js.org/docs/en/display/format) */\n format?: string;\n /** A placeholder date that controls the default values of each segment when the user first interacts with them. Defaults to today's date at midnight. */\n placeholderValue?: DateTime;\n /**\n * Which timezone use to show values. Example: 'default', 'system', 'Europe/Amsterdam'.\n * @default The timezone of the `value` or `defaultValue` or `placeholderValue`, 'default' otherwise.\n */\n timeZone?: string;\n}\n\nexport interface PopupTriggerProps<Args extends unknown[] = []> {\n /** Whether the popup is open (controlled). */\n open?: boolean;\n /** Whether the popup is open by default (uncontrolled). */\n defaultOpen?: boolean;\n /** Handler that is called when the popup's open state changes. */\n onOpenChange?: (open: boolean, ...args: Args) => void;\n}\n\nexport interface PopupStyleProps {\n /** Sets the CSS className for the popup element. */\n popupClassName?: string;\n /** Sets the CSS style attribute for the popup element. */\n popupStyle?: CSSProperties;\n /** Popup placement */\n popupPlacement?: PopupPlacement;\n /** Popup offset relative to anchor */\n popupOffset?: PopupOffset;\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { i18n as CalendarKeyset } from "../CalendarView/i18n/index.js";
|
|
2
|
+
import type { i18n as DateFieldKeyset } from "../DateField/i18n/index.js";
|
|
3
|
+
import type { i18n as DatePickerKeyset } from "../DatePicker/i18n/index.js";
|
|
4
|
+
import type { i18n as RangeDateSelectionKeyset } from "../RangeDateSelection/i18n/index.js";
|
|
5
|
+
import type { i18n as RelativeDatePickerKeyset } from "../RelativeDatePicker/i18n/index.js";
|
|
6
|
+
import type { i18n as RelativeRangeDatePickerControlKeyset } from "../RelativeRangeDatePicker/components/Control/i18n/index.js";
|
|
7
|
+
import type { i18n as RelativeRangeDatePickerFormKeyset } from "../RelativeRangeDatePicker/components/PickerDialog/i18n/index.js";
|
|
8
|
+
import type { i18n as RelativeRangeDatePickerPresetsKeyset } from "../RelativeRangeDatePicker/components/Presets/i18n/index.js";
|
|
9
|
+
import type { i18n as RelativeRangeDatePickerZonesKeyset } from "../RelativeRangeDatePicker/components/Zones/i18n/index.js";
|
|
10
|
+
import type { i18n as RelativeRangeDatePickerKeyset } from "../RelativeRangeDatePicker/i18n/index.js";
|
|
11
|
+
import type { i18n as ValidationKeyset } from "../utils/validation/i18n/index.js";
|
|
12
|
+
type DeepPartial<T, N extends number = 9> = N extends 0 ? T : Partial<{
|
|
13
|
+
[P in keyof T]: DeepPartial<T[P], [never, 0, 1, 2, 3, 4, 5, 6, 7, 8][N]>;
|
|
14
|
+
}>;
|
|
15
|
+
export type Keysets = typeof CalendarKeyset.keysetData & typeof DateFieldKeyset.keysetData & typeof DatePickerKeyset.keysetData & typeof RangeDateSelectionKeyset.keysetData & typeof RelativeDatePickerKeyset.keysetData & typeof RelativeRangeDatePickerKeyset.keysetData & typeof RelativeRangeDatePickerFormKeyset.keysetData & typeof RelativeRangeDatePickerPresetsKeyset.keysetData & typeof RelativeRangeDatePickerZonesKeyset.keysetData & typeof RelativeRangeDatePickerControlKeyset.keysetData & typeof ValidationKeyset.keysetData;
|
|
16
|
+
export type PartialKeysets = DeepPartial<Keysets, 2>;
|
|
17
|
+
export {};
|