@skbkontur/react-ui 4.2.2 → 4.3.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/CHANGELOG.md +17 -0
- package/cjs/components/Autocomplete/Autocomplete.d.ts +9 -17
- package/cjs/components/Autocomplete/Autocomplete.js +10 -6
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Button/Button.d.ts +4 -5
- package/cjs/components/Button/Button.js +8 -3
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.mixins.js +1 -1
- package/cjs/components/Button/Button.mixins.js.map +1 -1
- package/cjs/components/Button/Button.styles.js +18 -18
- package/cjs/components/Button/Button.styles.js.map +1 -1
- package/cjs/components/Center/Center.d.ts +4 -3
- package/cjs/components/Center/Center.js +9 -3
- package/cjs/components/Center/Center.js.map +1 -1
- package/cjs/components/ComboBox/ComboBox.d.ts +8 -13
- package/cjs/components/ComboBox/ComboBox.js +12 -2
- package/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.d.ts +6 -9
- package/cjs/components/CurrencyInput/CurrencyInput.js +15 -6
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -9
- package/cjs/components/CurrencyLabel/CurrencyLabel.js +15 -15
- package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/cjs/components/DateInput/DateInput.d.ts +8 -11
- package/cjs/components/DateInput/DateInput.js +11 -3
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +6 -8
- package/cjs/components/DatePicker/DatePicker.js +12 -6
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.d.ts +5 -5
- package/cjs/components/DropdownMenu/DropdownMenu.js +9 -3
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/FxInput/FxInput.d.ts +6 -6
- package/cjs/components/FxInput/FxInput.js +13 -10
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/Gapped/Gapped.d.ts +7 -8
- package/cjs/components/Gapped/Gapped.js +12 -6
- package/cjs/components/Gapped/Gapped.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoader.d.ts +7 -14
- package/cjs/components/GlobalLoader/GlobalLoader.js +13 -9
- package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
- package/cjs/components/Hint/Hint.d.ts +7 -11
- package/cjs/components/Hint/Hint.js +15 -5
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +4 -3
- package/cjs/components/Input/Input.js +7 -4
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Kebab/Kebab.d.ts +7 -11
- package/cjs/components/Kebab/Kebab.js +14 -5
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Link/Link.d.ts +4 -4
- package/cjs/components/Link/Link.js +11 -4
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Loader/Loader.d.ts +7 -4
- package/cjs/components/Loader/Loader.js +14 -4
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/Modal/Modal.d.ts +4 -3
- package/cjs/components/Modal/Modal.js +8 -3
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Paging/Paging.d.ts +6 -9
- package/cjs/components/Paging/Paging.js +15 -5
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/Paging/PagingDefaultComponent.d.ts +1 -1
- package/cjs/components/Paging/PagingDefaultComponent.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.d.ts +4 -3
- package/cjs/components/PasswordInput/PasswordInput.js +8 -3
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +4 -3
- package/cjs/components/Radio/Radio.js +8 -3
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -4
- package/cjs/components/RadioGroup/RadioGroup.js +4 -2
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +6 -7
- package/cjs/components/ScrollContainer/ScrollContainer.js +11 -5
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +3 -12
- package/cjs/components/Select/Select.js +6 -1
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/Select/Select.styles.js +4 -4
- package/cjs/components/Select/Select.styles.js.map +1 -1
- package/cjs/components/SidePage/SidePage.d.ts +5 -6
- package/cjs/components/SidePage/SidePage.js +8 -1
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/Spinner/Spinner.d.ts +4 -2
- package/cjs/components/Spinner/Spinner.js +9 -3
- package/cjs/components/Spinner/Spinner.js.map +1 -1
- package/cjs/components/Sticky/Sticky.d.ts +5 -4
- package/cjs/components/Sticky/Sticky.js +9 -2
- package/cjs/components/Sticky/Sticky.js.map +1 -1
- package/cjs/components/Tabs/Tab.d.ts +4 -4
- package/cjs/components/Tabs/Tab.js +11 -13
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Tabs/Tabs.d.ts +4 -4
- package/cjs/components/Tabs/Tabs.js +12 -3
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Textarea/Textarea.d.ts +8 -10
- package/cjs/components/Textarea/Textarea.js +10 -6
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +5 -6
- package/cjs/components/Toggle/Toggle.js +10 -4
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.d.ts +19 -16
- package/cjs/components/TokenInput/TokenInput.js +75 -57
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +10 -14
- package/cjs/components/Tooltip/Tooltip.js +23 -12
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.d.ts +5 -4
- package/cjs/components/TooltipMenu/TooltipMenu.js +11 -5
- package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
- package/cjs/internal/BGRuler.d.ts +13 -15
- package/cjs/internal/BGRuler.js +16 -8
- package/cjs/internal/BGRuler.js.map +1 -1
- package/cjs/internal/Calendar/Calendar.d.ts +4 -13
- package/cjs/internal/Calendar/Calendar.js +10 -5
- package/cjs/internal/Calendar/Calendar.js.map +1 -1
- package/cjs/internal/Calendar/DayCellView.styles.js +1 -1
- package/cjs/internal/Calendar/DayCellView.styles.js.map +1 -1
- package/cjs/internal/Calendar/Month.js +16 -11
- package/cjs/internal/Calendar/Month.js.map +1 -1
- package/cjs/internal/ComponentCombinator.d.ts +6 -8
- package/cjs/internal/ComponentCombinator.js +6 -2
- package/cjs/internal/ComponentCombinator.js.map +1 -1
- package/cjs/internal/ComponentTable.d.ts +5 -6
- package/cjs/internal/ComponentTable.js +11 -2
- package/cjs/internal/ComponentTable.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +4 -4
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js +7 -1
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +4 -12
- package/cjs/internal/CustomComboBox/ComboBoxView.js +18 -10
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.d.ts +4 -6
- package/cjs/internal/DateSelect/DateSelect.js +15 -9
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +3 -6
- package/cjs/internal/DropdownContainer/DropdownContainer.js +8 -5
- package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.d.ts +4 -3
- package/cjs/internal/InputLikeText/InputLikeText.js +7 -2
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/InternalMenu/InternalMenu.d.ts +3 -9
- package/cjs/internal/InternalMenu/InternalMenu.js +16 -6
- package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
- package/cjs/internal/MaskedInput/MaskedInput.d.ts +4 -2
- package/cjs/internal/MaskedInput/MaskedInput.js +7 -2
- package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/internal/Menu/Menu.d.ts +4 -7
- package/cjs/internal/Menu/Menu.js +7 -1
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +10 -16
- package/cjs/internal/Popup/Popup.js +21 -7
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +8 -11
- package/cjs/internal/PopupMenu/PopupMenu.js +8 -1
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/RenderLayer/RenderLayer.d.ts +4 -3
- package/cjs/internal/RenderLayer/RenderLayer.js +8 -2
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/internal/ThemePlayground/VariableValue.d.ts +5 -4
- package/cjs/internal/ThemePlayground/VariableValue.js +6 -1
- package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
- package/cjs/internal/ZIndex/ZIndex.d.ts +7 -11
- package/cjs/internal/ZIndex/ZIndex.js +10 -3
- package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
- package/cjs/lib/createPropsGetter.d.ts +2 -1
- package/cjs/lib/createPropsGetter.js +2 -0
- package/cjs/lib/createPropsGetter.js.map +1 -1
- package/components/Autocomplete/Autocomplete/Autocomplete.js +22 -12
- package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.d.ts +9 -17
- package/components/Button/Button/Button.js +11 -5
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +4 -5
- package/components/Button/Button.mixins/Button.mixins.js +1 -1
- package/components/Button/Button.mixins/Button.mixins.js.map +1 -1
- package/components/Button/Button.styles/Button.styles.js +18 -18
- package/components/Button/Button.styles/Button.styles.js.map +1 -1
- package/components/Center/Center/Center.js +7 -5
- package/components/Center/Center/Center.js.map +1 -1
- package/components/Center/Center.d.ts +4 -3
- package/components/ComboBox/ComboBox/ComboBox.js +3 -1
- package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
- package/components/ComboBox/ComboBox.d.ts +8 -13
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +21 -18
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput.d.ts +6 -9
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +21 -15
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -9
- package/components/DateInput/DateInput/DateInput.js +17 -4
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +8 -11
- package/components/DatePicker/DatePicker/DatePicker.js +12 -9
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +6 -8
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +8 -2
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.d.ts +5 -5
- package/components/FxInput/FxInput/FxInput.js +11 -9
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/FxInput/FxInput.d.ts +6 -6
- package/components/Gapped/Gapped/Gapped.js +17 -8
- package/components/Gapped/Gapped/Gapped.js.map +1 -1
- package/components/Gapped/Gapped.d.ts +7 -8
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +35 -16
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader.d.ts +7 -14
- package/components/Hint/Hint/Hint.js +30 -18
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +7 -11
- package/components/Input/Input/Input.js +9 -7
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +4 -3
- package/components/Kebab/Kebab/Kebab.js +19 -8
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +7 -11
- package/components/Link/Link/Link.js +9 -6
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.d.ts +4 -4
- package/components/Loader/Loader/Loader.js +22 -17
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/Loader/Loader.d.ts +7 -4
- package/components/Modal/Modal/Modal.js +3 -1
- package/components/Modal/Modal/Modal.js.map +1 -1
- package/components/Modal/Modal.d.ts +4 -3
- package/components/Paging/Paging/Paging.js +24 -14
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.d.ts +6 -9
- package/components/Paging/PagingDefaultComponent/PagingDefaultComponent.js.map +1 -1
- package/components/Paging/PagingDefaultComponent.d.ts +1 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js +7 -5
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/PasswordInput/PasswordInput.d.ts +4 -3
- package/components/Radio/Radio/Radio.js +7 -5
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +4 -3
- package/components/RadioGroup/RadioGroup/RadioGroup.js +10 -10
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +2 -4
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +10 -6
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +6 -7
- package/components/Select/Select/Select.js +4 -3
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +3 -12
- package/components/Select/Select.styles/Select.styles.js +4 -4
- package/components/Select/Select.styles/Select.styles.js.map +1 -1
- package/components/SidePage/SidePage/SidePage.js +14 -9
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +5 -6
- package/components/Spinner/Spinner/Spinner.js +7 -5
- package/components/Spinner/Spinner/Spinner.js.map +1 -1
- package/components/Spinner/Spinner.d.ts +4 -2
- package/components/Sticky/Sticky/Sticky.js +7 -4
- package/components/Sticky/Sticky/Sticky.js.map +1 -1
- package/components/Sticky/Sticky.d.ts +5 -4
- package/components/Tabs/Tab/Tab.js +15 -7
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tab.d.ts +4 -4
- package/components/Tabs/Tabs/Tabs.js +10 -8
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/Tabs.d.ts +4 -4
- package/components/Textarea/Textarea/Textarea.js +19 -14
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +8 -10
- package/components/Toggle/Toggle/Toggle.js +12 -7
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +5 -6
- package/components/TokenInput/TokenInput/TokenInput.js +107 -77
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +19 -16
- package/components/Tooltip/Tooltip/Tooltip.js +51 -30
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +10 -14
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +15 -13
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
- package/components/TooltipMenu/TooltipMenu.d.ts +5 -4
- package/internal/BGRuler/BGRuler.js +11 -6
- package/internal/BGRuler/BGRuler.js.map +1 -1
- package/internal/BGRuler.d.ts +13 -15
- package/internal/Calendar/Calendar/Calendar.js +11 -5
- package/internal/Calendar/Calendar/Calendar.js.map +1 -1
- package/internal/Calendar/Calendar.d.ts +4 -13
- package/internal/Calendar/DayCellView.styles/DayCellView.styles.js +1 -1
- package/internal/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
- package/internal/Calendar/Month/Month.js +20 -11
- package/internal/Calendar/Month/Month.js.map +1 -1
- package/internal/ComponentCombinator/ComponentCombinator.js +8 -5
- package/internal/ComponentCombinator/ComponentCombinator.js.map +1 -1
- package/internal/ComponentCombinator.d.ts +6 -8
- package/internal/ComponentTable/ComponentTable.js +16 -4
- package/internal/ComponentTable/ComponentTable.js.map +1 -1
- package/internal/ComponentTable.d.ts +5 -6
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +4 -2
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxMenu.d.ts +4 -4
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +21 -10
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +4 -12
- package/internal/DateSelect/DateSelect/DateSelect.js +14 -11
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/internal/DateSelect/DateSelect.d.ts +4 -6
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +6 -10
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
- package/internal/DropdownContainer/DropdownContainer.d.ts +3 -6
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +4 -2
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.d.ts +4 -3
- package/internal/InternalMenu/InternalMenu/InternalMenu.js +21 -10
- package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
- package/internal/InternalMenu/InternalMenu.d.ts +3 -9
- package/internal/MaskedInput/MaskedInput/MaskedInput.js +3 -1
- package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/internal/MaskedInput/MaskedInput.d.ts +4 -2
- package/internal/Menu/Menu/Menu.js +10 -3
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.d.ts +4 -7
- package/internal/Popup/Popup/Popup.js +32 -23
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +10 -16
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +12 -4
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +8 -11
- package/internal/RenderLayer/RenderLayer/RenderLayer.js +8 -4
- package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer.d.ts +4 -3
- package/internal/ThemePlayground/VariableValue/VariableValue.js +4 -2
- package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
- package/internal/ThemePlayground/VariableValue.d.ts +5 -4
- package/internal/ZIndex/ZIndex/ZIndex.js +15 -13
- package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
- package/internal/ZIndex/ZIndex.d.ts +7 -11
- package/lib/createPropsGetter/createPropsGetter.js.map +1 -1
- package/lib/createPropsGetter.d.ts +2 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["BGRuler.tsx"],"names":["React","getDOMRect","BGRuler","iframe","componentDidMount","contentWindow","addEventListener","update","componentWillUnmount","removeEventListener","forceUpdate","iframeRef","ref","render","props","width","
|
|
1
|
+
{"version":3,"sources":["BGRuler.tsx"],"names":["React","getDOMRect","createPropsGetter","BGRuler","getProps","defaultProps","iframe","componentDidMount","contentWindow","addEventListener","update","componentWillUnmount","removeEventListener","forceUpdate","iframeRef","ref","render","props","width","bottom","height","top","left","right","color","wrapper","position","overflow","border","visibility","marks","backgroundSize","backgroundRepeat","highMarks","backgroundImage","middleMarks","shortMarks","rulerWidth","labels","Array","Math","ceil","fill","map","value","index","label","fontFamily","fontSize","lineHeight","Component"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { getDOMRect } from '../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../lib/createPropsGetter';\n\ninterface BGRulerProps {\n width?: string | number;\n height?: string | number;\n top?: string | number;\n bottom?: string | number;\n right?: string | number;\n left?: string | number;\n color?: string;\n}\n\ntype DefaultProps = Required<Pick<BGRulerProps, 'height' | 'top' | 'left' | 'right' | 'color'>>;\n\n/**\n * Компонент рисует пиксельную линейку на заднем фоне.\n * Помогает контролировать размеры элементов при скриншотном тестировании.\n *\n * @see FxInput/__stories__/FxInput.stories.tsx\n */\nexport class BGRuler extends React.Component<BGRulerProps> {\n public static defaultProps: DefaultProps = {\n height: 20,\n top: 0,\n left: 0,\n right: 0,\n color: '#333',\n };\n\n private getProps = createPropsGetter(BGRuler.defaultProps);\n\n private iframe: HTMLIFrameElement | null = null;\n\n public componentDidMount = () => {\n if (this.iframe && this.iframe.contentWindow) {\n this.iframe.contentWindow.addEventListener('resize', this.update, true);\n }\n this.update();\n };\n\n public componentWillUnmount = () => {\n if (this.iframe && this.iframe.contentWindow) {\n this.iframe.contentWindow.removeEventListener('resize', this.update, true);\n }\n };\n\n public update = () => {\n this.forceUpdate();\n };\n\n public render() {\n const { width, bottom } = this.props;\n const { height, top, left, right, color } = this.getProps();\n const wrapper: React.CSSProperties = {\n position: 'absolute',\n width,\n height,\n top,\n bottom,\n left,\n right,\n overflow: 'hidden',\n };\n const iframe: React.CSSProperties = {\n position: 'absolute',\n width: '100%',\n height: '100%',\n border: 0,\n visibility: 'hidden',\n };\n const marks: React.CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n backgroundSize: '100px 20px',\n backgroundRepeat: 'repeat-x',\n };\n const highMarks: React.CSSProperties = {\n ...marks,\n height: '100%',\n backgroundImage: `linear-gradient(90deg, ${color} 0, ${color} 1px, transparent 1px)`,\n };\n const middleMarks: React.CSSProperties = {\n ...marks,\n height: '75%',\n backgroundImage: `linear-gradient(90deg, transparent 0, transparent 49px, ${color} 49px, ${color} 50px, transparent 50px)`,\n };\n const shortMarks: React.CSSProperties = {\n ...marks,\n height: '40%',\n backgroundImage: `\n linear-gradient(90deg, transparent 0, transparent 9px, ${color} 9px, ${color} 10px, transparent 10px),\n linear-gradient(90deg, transparent 0, transparent 19px, ${color} 19px, ${color} 20px, transparent 20px),\n linear-gradient(90deg, transparent 0, transparent 29px, ${color} 29px, ${color} 30px, transparent 30px),\n linear-gradient(90deg, transparent 0, transparent 39px, ${color} 39px, ${color} 40px, transparent 40px),\n linear-gradient(90deg, transparent 0, transparent 59px, ${color} 59px, ${color} 60px, transparent 60px),\n linear-gradient(90deg, transparent 0, transparent 69px, ${color} 69px, ${color} 70px, transparent 70px),\n linear-gradient(90deg, transparent 0, transparent 79px, ${color} 79px, ${color} 80px, transparent 80px),\n linear-gradient(90deg, transparent 0, transparent 89px, ${color} 89px, ${color} 90px, transparent 90px)\n `,\n };\n const rulerWidth = getDOMRect(this.iframe).width;\n const labels = Array(Math.ceil(rulerWidth / 100) + 1)\n .fill(null)\n .map((value, index) => {\n const label: React.CSSProperties = {\n position: 'absolute',\n fontFamily: 'Arial',\n fontSize: 10,\n lineHeight: 1,\n color,\n bottom: -1,\n left: index * 100 + 5,\n };\n return (\n <span key={index} style={label}>\n {index * 100}\n </span>\n );\n });\n return (\n <div style={wrapper}>\n <div style={highMarks} />\n <div style={middleMarks} />\n <div style={shortMarks} />\n {labels}\n <iframe title=\"BGRuler\" style={iframe} ref={this.iframeRef} />\n </div>\n );\n }\n\n private iframeRef = (ref: HTMLIFrameElement | null) => {\n this.iframe = ref;\n };\n}\n"]}
|
package/internal/BGRuler.d.ts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
3
|
-
* Компонент рисует пиксельную линейку на заднем фоне.
|
|
4
|
-
* Помогает контролировать размеры элементов при скриншотном тестировании.
|
|
5
|
-
*
|
|
6
|
-
* @see FxInput/__stories__/FxInput.stories.tsx
|
|
7
|
-
*/
|
|
8
|
-
export declare class BGRuler extends React.Component<{
|
|
2
|
+
interface BGRulerProps {
|
|
9
3
|
width?: string | number;
|
|
10
4
|
height?: string | number;
|
|
11
5
|
top?: string | number;
|
|
@@ -13,14 +7,17 @@ export declare class BGRuler extends React.Component<{
|
|
|
13
7
|
right?: string | number;
|
|
14
8
|
left?: string | number;
|
|
15
9
|
color?: string;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
10
|
+
}
|
|
11
|
+
declare type DefaultProps = Required<Pick<BGRulerProps, 'height' | 'top' | 'left' | 'right' | 'color'>>;
|
|
12
|
+
/**
|
|
13
|
+
* Компонент рисует пиксельную линейку на заднем фоне.
|
|
14
|
+
* Помогает контролировать размеры элементов при скриншотном тестировании.
|
|
15
|
+
*
|
|
16
|
+
* @see FxInput/__stories__/FxInput.stories.tsx
|
|
17
|
+
*/
|
|
18
|
+
export declare class BGRuler extends React.Component<BGRulerProps> {
|
|
19
|
+
static defaultProps: DefaultProps;
|
|
20
|
+
private getProps;
|
|
24
21
|
private iframe;
|
|
25
22
|
componentDidMount: () => void;
|
|
26
23
|
componentWillUnmount: () => void;
|
|
@@ -28,3 +25,4 @@ export declare class BGRuler extends React.Component<{
|
|
|
28
25
|
render(): JSX.Element;
|
|
29
26
|
private iframeRef;
|
|
30
27
|
}
|
|
28
|
+
export {};
|
|
@@ -9,6 +9,7 @@ import { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from "..
|
|
|
9
9
|
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
10
10
|
import { animation } from "../../../lib/animation";
|
|
11
11
|
import { isMobile } from "../../../lib/client";
|
|
12
|
+
import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
12
13
|
import { themeConfig } from "../config";
|
|
13
14
|
import * as CalendarUtils from "../CalendarUtils";
|
|
14
15
|
import { MonthViewModel } from "../MonthViewModel";
|
|
@@ -41,12 +42,13 @@ export var Calendar = /*#__PURE__*/function (_React$Component) {
|
|
|
41
42
|
var _this;
|
|
42
43
|
|
|
43
44
|
_this = _React$Component.call(this, props) || this;
|
|
45
|
+
_this.getProps = createPropsGetter(Calendar.defaultProps);
|
|
44
46
|
_this.animation = animation();
|
|
45
47
|
_this.touchStartY = null;
|
|
46
48
|
|
|
47
49
|
_this.scrollToMonth = /*#__PURE__*/function () {
|
|
48
50
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(month, year) {
|
|
49
|
-
var _this$
|
|
51
|
+
var _this$getProps, minDate, maxDate, currentMonth, diffInMonths, maxMonthsToAdd, onEnd, isYearChanges, monthsToPrependCount, monthsToPrepend, monthsToAppendCount, monthsToAppend;
|
|
50
52
|
|
|
51
53
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
52
54
|
while (1) {
|
|
@@ -66,7 +68,7 @@ export var Calendar = /*#__PURE__*/function (_React$Component) {
|
|
|
66
68
|
});
|
|
67
69
|
|
|
68
70
|
case 4:
|
|
69
|
-
_this$
|
|
71
|
+
_this$getProps = _this.getProps(), minDate = _this$getProps.minDate, maxDate = _this$getProps.maxDate;
|
|
70
72
|
|
|
71
73
|
if (!(minDate && isGreater(minDate, create(32, month, year)))) {
|
|
72
74
|
_context.next = 8;
|
|
@@ -392,12 +394,17 @@ export var Calendar = /*#__PURE__*/function (_React$Component) {
|
|
|
392
394
|
_proto.renderMonth = function renderMonth(_ref5) {
|
|
393
395
|
var top = _ref5[0],
|
|
394
396
|
month = _ref5[1];
|
|
397
|
+
|
|
398
|
+
var _this$getProps2 = this.getProps(),
|
|
399
|
+
minDate = _this$getProps2.minDate,
|
|
400
|
+
maxDate = _this$getProps2.maxDate;
|
|
401
|
+
|
|
395
402
|
return /*#__PURE__*/React.createElement(Month, {
|
|
396
403
|
key: month.month + '-' + month.year,
|
|
397
404
|
top: top,
|
|
398
405
|
month: month,
|
|
399
|
-
maxDate:
|
|
400
|
-
minDate:
|
|
406
|
+
maxDate: maxDate,
|
|
407
|
+
minDate: minDate,
|
|
401
408
|
today: this.state.today,
|
|
402
409
|
value: this.props.value,
|
|
403
410
|
onDateClick: this.props.onSelect,
|
|
@@ -424,7 +431,6 @@ export var Calendar = /*#__PURE__*/function (_React$Component) {
|
|
|
424
431
|
}(React.Component);
|
|
425
432
|
Calendar.__KONTUR_REACT_UI__ = 'Calendar';
|
|
426
433
|
Calendar.defaultProps = {
|
|
427
|
-
holidays: [],
|
|
428
434
|
minDate: {
|
|
429
435
|
year: MIN_YEAR,
|
|
430
436
|
month: MIN_MONTH,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Calendar.tsx"],"names":["React","normalizeWheel","throttle","MAX_DATE","MAX_MONTH","MAX_YEAR","MIN_DATE","MIN_MONTH","MIN_YEAR","ThemeContext","animation","isMobile","themeConfig","CalendarUtils","MonthViewModel","CalendarScrollEvents","Month","styles","create","isGreater","isLess","CalendarDataTids","root","month","headerMonth","headerYear","getTodayDate","date","Date","getDate","getMonth","year","getFullYear","Calendar","props","touchStartY","scrollToMonth","inProgress","finish","Promise","r","setTimeout","minDate","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","renderMain","positions","getMonthPositions","wrapperStyle","height","WRAPPER_HEIGHT","refRoot","wrapper","map","x","i","filter","top","isMonthVisible","renderMonth","element","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","window","scrollToNearestWeek","scrollDirection","trasholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_SIZE","amount","pos","scrollAmmount","scrollAmount","today","initialMonth","initialYear","touchStart","componentWillUnmount","cancel","render","value","onSelect","isHoliday","position","push","Component","__KONTUR_REACT_UI__","defaultProps","holidays"],"mappings":"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","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\n\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\n\nimport { themeConfig } from './config';\nimport * as CalendarUtils from './CalendarUtils';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { styles } from './Calendar.styles';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\n\nexport interface CalendarProps {\n initialMonth?: number;\n initialYear?: number;\n onSelect?: (date: CalendarDateShape) => void;\n value?: Nullable<CalendarDateShape>;\n maxDate?: CalendarDateShape;\n minDate?: CalendarDateShape;\n isHoliday?: (day: CalendarDateShape & { isWeekend: boolean }) => boolean;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n today: CalendarDateShape;\n scrollDirection: number;\n scrollTarget: number;\n touchStart: number;\n}\n\nexport const CalendarDataTids = {\n root: 'Calendar',\n month: 'MonthView__month',\n headerMonth: 'MonthView__headerMonth',\n headerYear: 'MonthView__headerYear',\n} as const;\n\nconst getTodayDate = () => {\n const date = new Date();\n return {\n date: date.getDate(),\n month: date.getMonth(),\n year: date.getFullYear(),\n };\n};\n\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n\n public static defaultProps = {\n holidays: [],\n minDate: {\n year: MIN_YEAR,\n month: MIN_MONTH,\n date: MIN_DATE,\n },\n maxDate: {\n year: MAX_YEAR,\n month: MAX_MONTH,\n date: MAX_DATE,\n },\n };\n\n private theme!: Theme;\n private wheelEndTimeout: Nullable<number>;\n private root: Nullable<HTMLElement>;\n private animation = animation();\n private touchStartY: Nullable<number> = null;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const today = getTodayDate();\n\n const initialMonth = props.initialMonth ?? today.month;\n const initialYear = props.initialYear ?? today.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n today,\n scrollDirection: 1,\n scrollTarget: 0,\n touchStart: 0,\n };\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Scrolls calendar to given date\n * @public\n */\n public scrollToMonth = async (month: number, year: number) => {\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => setTimeout(r));\n }\n\n const { minDate, maxDate } = this.props;\n\n if (minDate && isGreater(minDate, create(32, month, year))) {\n this.scrollToMonth(minDate.month, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, month, year))) {\n this.scrollToMonth(maxDate.month, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - month - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () =>\n this.setState({\n months: CalendarUtils.getMonths(month, year),\n scrollPosition: 0,\n });\n\n const isYearChanges = (state: CalendarState) =>\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2;\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) =>\n MonthViewModel.create(month + index, year),\n );\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) =>\n MonthViewModel.create(month + index - monthsToAppendCount + 2, year),\n );\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private renderMain = () => {\n const positions = this.getMonthPositions();\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n return (\n <div ref={this.refRoot} className={styles.root(this.theme)} data-tid={CalendarDataTids.root}>\n <div style={wrapperStyle} className={styles.wrapper()}>\n {this.state.months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme))\n .map(this.renderMonth, this)}\n </div>\n </div>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n maxDate={this.props.maxDate}\n minDate={this.props.minDate}\n today={this.state.today}\n value={this.props.value}\n onDateClick={this.props.onSelect}\n onMonthYearChange={this.handleMonthYearChange}\n isHoliday={this.props.isHoliday}\n />\n );\n }\n\n private getMonthPositions() {\n const { scrollPosition, months } = this.state;\n\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) =>\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any),\n );\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = window.setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const trasholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_SIZE;\n\n if (scrollTarget < trasholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = trasholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) =>\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any),\n );\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) =>\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n })),\n onEnd,\n );\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Calendar.tsx"],"names":["React","normalizeWheel","throttle","MAX_DATE","MAX_MONTH","MAX_YEAR","MIN_DATE","MIN_MONTH","MIN_YEAR","ThemeContext","animation","isMobile","createPropsGetter","themeConfig","CalendarUtils","MonthViewModel","CalendarScrollEvents","Month","styles","create","isGreater","isLess","CalendarDataTids","root","month","headerMonth","headerYear","getTodayDate","date","Date","getDate","getMonth","year","getFullYear","Calendar","props","getProps","defaultProps","touchStartY","scrollToMonth","inProgress","finish","Promise","r","setTimeout","minDate","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","renderMain","positions","getMonthPositions","wrapperStyle","height","WRAPPER_HEIGHT","refRoot","wrapper","map","x","i","filter","top","isMonthVisible","renderMonth","element","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","window","scrollToNearestWeek","scrollDirection","trasholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_SIZE","amount","pos","scrollAmmount","scrollAmount","today","initialMonth","initialYear","touchStart","componentWillUnmount","cancel","render","value","onSelect","isHoliday","position","push","Component","__KONTUR_REACT_UI__"],"mappings":"qSAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,cAAP,MAA2B,iBAA3B;AACA,OAAOC,QAAP,MAAqB,iBAArB;;AAEA,SAASC,QAAT,EAAmBC,SAAnB,EAA8BC,QAA9B,EAAwCC,QAAxC,EAAkDC,SAAlD,EAA6DC,QAA7D,QAA6E,0BAA7E;;;AAGA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,SAAT,QAA0B,qBAA1B;AACA,SAASC,QAAT,QAAyB,kBAAzB;AACA,SAASC,iBAAT,QAAkC,6BAAlC;;AAEA,SAASC,WAAT,QAA4B,UAA5B;AACA,OAAO,KAAKC,aAAZ,MAA+B,iBAA/B;AACA,SAASC,cAAT,QAA+B,kBAA/B;AACA,OAAO,KAAKC,oBAAZ,MAAsC,wBAAtC;AACA,SAASC,KAAT,QAAsB,SAAtB;AACA,SAASC,MAAT,QAAuB,mBAAvB;AACA,SAA4BC,MAA5B,EAAoCC,SAApC,EAA+CC,MAA/C,QAA6D,qBAA7D;;;;;;;;;;;;;;;;;;;;;AAqBA,OAAO,IAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,IAAI,EAAE,UADwB;AAE9BC,EAAAA,KAAK,EAAE,kBAFuB;AAG9BC,EAAAA,WAAW,EAAE,wBAHiB;AAI9BC,EAAAA,UAAU,EAAE,uBAJkB,EAAzB;;;AAOP,IAAMC,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzB,MAAMC,IAAI,GAAG,IAAIC,IAAJ,EAAb;AACA,SAAO;AACLD,IAAAA,IAAI,EAAEA,IAAI,CAACE,OAAL,EADD;AAELN,IAAAA,KAAK,EAAEI,IAAI,CAACG,QAAL,EAFF;AAGLC,IAAAA,IAAI,EAAEJ,IAAI,CAACK,WAAL,EAHD,EAAP;;AAKD,CAPD;;;;AAWA,WAAaC,QAAb;;;;;;;;;;;;;;;;;;;;;;;;AAwBE,oBAAYC,KAAZ,EAAkC;AAChC,wCAAMA,KAAN,UADgC,MAR1BC,QAQ0B,GARfxB,iBAAiB,CAACsB,QAAQ,CAACG,YAAV,CAQF,OAH1B3B,SAG0B,GAHdA,SAAS,EAGK,OAF1B4B,WAE0B,GAFM,IAEN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuC3BC,IAAAA,aAvC2B,iGAuCX,iBAAOf,KAAP,EAAsBQ,IAAtB;AACjB,sBAAKtB,SAAL,CAAe8B,UAAf,EADiB;AAEnB,sBAAK9B,SAAL,CAAe+B,MAAf;AACA;AAHmB,yCAIb,IAAIC,OAAJ,CAAY,UAACC,CAAD,UAAOC,UAAU,CAACD,CAAD,CAAjB,EAAZ,CAJa;;;AAOQ,sBAAKP,QAAL,EAPR,EAObS,OAPa,kBAObA,OAPa,EAOJC,OAPI,kBAOJA,OAPI;;AASjBD,gBAAAA,OAAO,IAAIzB,SAAS,CAACyB,OAAD,EAAU1B,MAAM,CAAC,EAAD,EAAKK,KAAL,EAAYQ,IAAZ,CAAhB,CATH;AAUnB,sBAAKO,aAAL,CAAmBM,OAAO,CAACrB,KAA3B,EAAkCqB,OAAO,CAACb,IAA1C,EAVmB;;;;AAcjBc,gBAAAA,OAAO,IAAIzB,MAAM,CAACyB,OAAD,EAAU3B,MAAM,CAAC,CAAD,EAAIK,KAAJ,EAAWQ,IAAX,CAAhB,CAdA;AAenB,sBAAKO,aAAL,CAAmBO,OAAO,CAACtB,KAA3B,EAAkCsB,OAAO,CAACd,IAA1C,EAfmB;;;;AAmBfe,gBAAAA,YAnBe,GAmBA,MAAKC,KAAL,CAAWC,MAAX,CAAkB,CAAlB,CAnBA;AAoBfC,gBAAAA,YApBe,GAoBAH,YAAY,CAACvB,KAAb,GAAqBuB,YAAY,CAACf,IAAb,GAAoB,EAAzC,GAA8CR,KAA9C,GAAsDQ,IAAI,GAAG,EApB7D;;AAsBjBkB,gBAAAA,YAAY,KAAK,CAtBA;AAuBnB,sBAAKC,QAAL,CAAc,CAAd,EAvBmB;;;;AA2BfC,gBAAAA,cA3Be,GA2BEvC,WAAW,CAAC,MAAKwC,KAAN,CAAX,CAAwBC,8BA3B1B;;AA6BfC,gBAAAA,KA7Be,GA6BP,SAARA,KAAQ;AACZ,0BAAKC,QAAL,CAAc;AACZP,sBAAAA,MAAM,EAAEnC,aAAa,CAAC2C,SAAd,CAAwBjC,KAAxB,EAA+BQ,IAA/B,CADI;AAEZ0B,sBAAAA,cAAc,EAAE,CAFJ,EAAd,CADY,GA7BO;;;AAmCfC,gBAAAA,aAnCe,GAmCC,SAAhBA,aAAgB,CAACX,KAAD;AACpBA,oBAAAA,KAAK,CAACC,MAAN,CAAa,CAAb,EAAgBjB,IAAhB,KAAyBA,IAAzB;AACA;AACA;AACA;AACA4B,oBAAAA,IAAI,CAACC,GAAL,CAASX,YAAT,IAAyB,CALL,GAnCD;;AA0CrB;AACA;AACA,oBAAIA,YAAY,GAAG,CAAnB,EAAsB;AACdY,kBAAAA,oBADc,GACSF,IAAI,CAACG,GAAL,CAASH,IAAI,CAACC,GAAL,CAASX,YAAT,IAAyB,CAAlC,EAAqCE,cAArC,CADT;AAEdY,kBAAAA,eAFc,GAEIC,KAAK,CAACC,IAAN,CAAW,EAAEC,MAAM,EAAEL,oBAAV,EAAX,EAA6C,UAACM,CAAD,EAAIC,KAAJ;AACnEtD,sBAAAA,cAAc,CAACI,MAAf,CAAsBK,KAAK,GAAG6C,KAA9B,EAAqCrC,IAArC,CADmE,GAA7C,CAFJ;;AAKpB,wBAAKwB,QAAL;AACE,4BAACR,KAAD,EAAW;AACT,wBAAMsB,WAAW,GAAGX,aAAa,CAACX,KAAD,CAAjC;AACA,wBAAIsB,WAAJ,EAAiB;AACf;AACA;AACAtB,sBAAAA,KAAK,CAACC,MAAN,CAAa,CAAb,EAAgBsB,aAAhB,GAAgC,IAAhC;AACA,0BAAIP,eAAe,CAACG,MAApB,EAA4B;AAC1B;AACAH,wBAAAA,eAAe,CAACA,eAAe,CAACG,MAAhB,GAAyB,CAA1B,CAAf,CAA4CK,YAA5C,GAA2D,IAA3D;AACD;AACF;AACD,2BAAO;AACLvB,sBAAAA,MAAM,EAAEe,eAAe,CAACS,MAAhB,CAAuBzB,KAAK,CAACC,MAA7B,CADH;AAELS,sBAAAA,cAAc,EAAE,CAAC5C,aAAa,CAAC4D,eAAd,CAA8BV,eAA9B,EAA+C,MAAKX,KAApD,CAFZ,EAAP;;AAID,mBAhBH;AAiBE,8BAAM;AACJ,wBAAMsB,cAAc,GAAG,MAAK3B,KAAL,CAAWC,MAAX,CAAkB,CAAlB,EAAqB2B,SAArB,CAA+B,MAAKvB,KAApC,CAAvB;AACA,0BAAKF,QAAL,CAAcwB,cAAd,EAA8BpB,KAA9B;AACD,mBApBH;;AAsBD;;AAED;AACA;AACA,oBAAIL,YAAY,GAAG,CAAnB,EAAsB;AACd2B,kBAAAA,mBADc,GACQjB,IAAI,CAACG,GAAL,CAASH,IAAI,CAACC,GAAL,CAASX,YAAT,CAAT,EAAiCE,cAAjC,CADR;AAEd0B,kBAAAA,cAFc,GAEGb,KAAK,CAACC,IAAN,CAAW,EAAEC,MAAM,EAAEU,mBAAV,EAAX,EAA4C,UAACT,CAAD,EAAIC,KAAJ;AACjEtD,sBAAAA,cAAc,CAACI,MAAf,CAAsBK,KAAK,GAAG6C,KAAR,GAAgBQ,mBAAhB,GAAsC,CAA5D,EAA+D7C,IAA/D,CADiE,GAA5C,CAFH;;AAKpB,wBAAKwB,QAAL;AACE,4BAACR,KAAD,EAAW;AACT,wBAAIW,aAAa,CAACX,KAAD,CAAjB,EAA0B;AACxB;AACA;AACAA,sBAAAA,KAAK,CAACC,MAAN,CAAaD,KAAK,CAACC,MAAN,CAAakB,MAAb,GAAsB,CAAnC,EAAsCK,YAAtC,GAAqD,IAArD;AACA;AACA,0BAAIM,cAAc,CAAC,CAAD,CAAlB,EAAuB;AACrBA,wBAAAA,cAAc,CAAC,CAAD,CAAd,CAAkBP,aAAlB,GAAkC,IAAlC;AACD;AACF;AACD,2BAAO,EAAEtB,MAAM,EAAED,KAAK,CAACC,MAAN,CAAawB,MAAb,CAAoBK,cAApB,CAAV,EAAP;AACD,mBAZH;AAaE,8BAAM;AACJ,wBAAMH,cAAc,GAAG,CAAC,CAAD,GAAK7D,aAAa,CAAC4D,eAAd,CAA8B,MAAK1B,KAAL,CAAWC,MAAX,CAAkB8B,KAAlB,CAAwB,CAAxB,EAA2B,CAAC,CAA5B,CAA9B,EAA8D,MAAK1B,KAAnE,CAA5B;AACA,0BAAKF,QAAL,CAAcwB,cAAd,EAA8BpB,KAA9B;AACD,mBAhBH;;AAkBD,iBAlGoB,yDAvCW;;;AA4I1ByB,IAAAA,UA5I0B,GA4Ib,YAAM;AACzB,UAAMC,SAAS,GAAG,MAAKC,iBAAL,EAAlB;AACA,UAAMC,YAAY,GAAG,EAAEC,MAAM,EAAEvE,WAAW,CAAC,MAAKwC,KAAN,CAAX,CAAwBgC,cAAlC,EAArB;AACA;AACE,qCAAK,GAAG,EAAE,MAAKC,OAAf,EAAwB,SAAS,EAAEpE,MAAM,CAACK,IAAP,CAAY,MAAK8B,KAAjB,CAAnC,EAA4D,YAAU/B,gBAAgB,CAACC,IAAvF;AACE,qCAAK,KAAK,EAAE4D,YAAZ,EAA0B,SAAS,EAAEjE,MAAM,CAACqE,OAAP,EAArC;AACG,cAAKvC,KAAL,CAAWC,MAAX;AACEuC,QAAAA,GADF,CACgC,UAACC,CAAD,EAAIC,CAAJ,UAAU,CAACT,SAAS,CAACS,CAAD,CAAV,EAAeD,CAAf,CAAV,EADhC;AAEEE,QAAAA,MAFF,CAES,sBAAEC,GAAF,YAAOpE,KAAP,mBAAkBV,aAAa,CAAC+E,cAAd,CAA6BD,GAA7B,EAAkCpE,KAAlC,EAAyC,MAAK6B,KAA9C,CAAlB,EAFT;AAGEmC,QAAAA,GAHF,CAGM,MAAKM,WAHX,gCADH,CADF,CADF;;;;AAUD,KAzJiC;;AA2J1BR,IAAAA,OA3J0B,GA2JhB,UAACS,OAAD,EAAiC;AACjD,UAAI,CAAC,MAAKxE,IAAN,IAAcwE,OAAlB,EAA2B;AACzB,YAAIpF,QAAJ,EAAc;AACZoF,UAAAA,OAAO,CAACC,gBAAR,CAAyB,YAAzB,EAAuC,MAAKC,gBAA5C;AACAF,UAAAA,OAAO,CAACC,gBAAR,CAAyB,WAAzB,EAAsC,MAAKE,wBAA3C;AACD,SAHD,MAGO;AACLH,UAAAA,OAAO,CAACC,gBAAR,CAAyB,OAAzB,EAAkC,MAAKG,WAAvC,EAAoD,EAAEC,OAAO,EAAE,KAAX,EAApD;AACD;AACF;AACD,UAAI,MAAK7E,IAAL,IAAa,CAACwE,OAAlB,EAA2B;AACzB,YAAIpF,QAAJ,EAAc;AACZ,gBAAKY,IAAL,CAAU8E,mBAAV,CAA8B,YAA9B,EAA4C,MAAKJ,gBAAjD;AACA,gBAAK1E,IAAL,CAAU8E,mBAAV,CAA8B,WAA9B,EAA2C,MAAKH,wBAAhD;AACD,SAHD,MAGO;AACL,gBAAK3E,IAAL,CAAU8E,mBAAV,CAA8B,OAA9B,EAAuC,MAAKF,WAA5C;AACD;AACF;AACD,YAAK5E,IAAL,GAAYwE,OAAZ;AACD,KA7KiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4M1BO,IAAAA,qBA5M0B,GA4MF,UAAC9E,KAAD,EAAgBQ,IAAhB,EAAiC;AAC/D,YAAKO,aAAL,CAAmBf,KAAnB,EAA0BQ,IAA1B;AACD,KA9MiC;;AAgN1BuE,IAAAA,iBAhN0B,GAgNN,UAACC,MAAD,EAAoB;AAC9C,YAAKhD,QAAL,CAAc,iBAAgC,KAA7BP,MAA6B,SAA7BA,MAA6B,CAArBS,cAAqB,SAArBA,cAAqB;AAC5C,YAAMiB,cAAc,GAAG7D,aAAa,CAAC2F,uBAAd;AACrBxD,QAAAA,MADqB;AAErBS,QAAAA,cAFqB;AAGrB8C,QAAAA,MAHqB;AAIrB,cAAKnD,KAJgB;AAKrBK,QAAAA,cALF;AAMA,eAAO,EAAEgD,YAAY,EAAE/B,cAAhB,EAAP;AACD,OARD,EAQG,MAAKgC,cARR;;AAUA,YAAKjG,SAAL,CAAekG,OAAf,CAAuBJ,MAAvB,EAA+B,UAACK,MAAD;AAC7B;AACA,gBAAKrD,QAAL,CAAc1C,aAAa,CAACgG,UAAd,CAAyBD,MAAzB,EAAiC,MAAKxD,KAAtC,CAAd,CAF6B,GAA/B;;;AAKArC,MAAAA,oBAAoB,CAAC+F,IAArB;AACD,KAjOiC;;AAmO1Bd,IAAAA,gBAnO0B,GAmOP,UAACe,KAAD,EAAkB;AAC3C,UAAI,EAAEA,KAAK,YAAYC,UAAnB,CAAJ,EAAoC;AAClC;AACD;;AAED,UAAMC,OAAO,GAAGF,KAAK,CAACG,aAAN,CAAoB,CAApB,EAAuBD,OAAvC;AACA,YAAK5E,WAAL,GAAmB4E,OAAnB;AACD,KA1OiC;;AA4O1BE,IAAAA,eA5O0B,GA4OR,UAACJ,KAAD,EAAkB;AAC1C,UAAI,EAAEA,KAAK,YAAYC,UAAnB,CAAJ,EAAoC;AAClC;AACD;;AAED,UAAQC,OAAR,GAAoBF,KAAK,CAACK,cAAN,CAAqB,CAArB,CAApB,CAAQH,OAAR;;AAEA,UAAML,MAAM,GAAG,CAAC,MAAKvE,WAAL,IAAoB,CAArB,IAA0B4E,OAAzC;AACA,YAAK5E,WAAL,GAAmB4E,OAAnB;;AAEA,YAAKX,iBAAL,CAAuBM,MAAvB;AACD,KAvPiC;;AAyP1BX,IAAAA,wBAzP0B,GAyPChG,QAAQ,CAAC,MAAKkH,eAAN,EAAuB,EAAvB,CAzPT;;AA2P1BjB,IAAAA,WA3P0B,GA2PZ,UAACa,KAAD,EAAkB;AACtC,UAAI,EAAEA,KAAK,YAAYM,UAAnB,CAAJ,EAAoC;AAClC;AACD;AACDN,MAAAA,KAAK,CAACO,cAAN;AACA,4BAAmBtH,cAAc,CAAC+G,KAAD,CAAjC,CAAQR,MAAR,mBAAQA,MAAR;;AAEA,YAAKD,iBAAL,CAAuBC,MAAvB;AACD,KAnQiC;;AAqQ1BG,IAAAA,cArQ0B,GAqQT,YAAM;AAC7B,UAAI,MAAKa,eAAT,EAA0B;AACxBC,QAAAA,YAAY,CAAC,MAAKD,eAAN,CAAZ;AACD;AACD,YAAKA,eAAL,GAAuBE,MAAM,CAAC9E,UAAP,CAAkB,MAAK+E,mBAAvB,EAA4C,GAA5C,CAAvB;AACD,KA1QiC;AA2Q1BA,IAAAA,mBA3Q0B,GA2QJ,YAAM;AAClC,wBAA0C,MAAK3E,KAA/C,CAAQ0D,YAAR,eAAQA,YAAR,CAAsBkB,eAAtB,eAAsBA,eAAtB;;AAEA,UAAMC,cAAc,GAAGhH,WAAW,CAAC,MAAKwC,KAAN,CAAX,CAAwByE,yBAAxB,GAAoDjH,WAAW,CAAC,MAAKwC,KAAN,CAAX,CAAwB0E,QAAnG;;AAEA,UAAIrB,YAAY,GAAGmB,cAAnB,EAAmC;AACjC,YAAIlD,cAAc,GAAG,CAArB;AACA,YAAIiD,eAAe,GAAG,CAAtB,EAAyB;AACvBjD,UAAAA,cAAc,GAAGkD,cAAjB;AACD;;AAED,cAAKrE,QAAL,CAAc,EAAEkD,YAAY,EAAE/B,cAAhB,EAAd,EAAgD,YAAM;AACpD,cAAMqD,MAAM,GAAGtB,YAAY,GAAG/B,cAA9B;AACA,gBAAKjE,SAAL,CAAekG,OAAf,CAAuBoB,MAAvB,EAA+B,UAACnB,MAAD;AAC7B;AACA,oBAAKrD,QAAL,CAAc1C,aAAa,CAACgG,UAAd,CAAyBD,MAAzB,EAAiC,MAAKxD,KAAtC,CAAd,CAF6B,GAA/B;;AAID,SAND;AAOD;AACF,KA9RiC;;AAgS1BF,IAAAA,QAhS0B,GAgSf,UAAC8E,GAAD,EAAc1E,KAAd,EAAqC;AACtD,UAAM2E,aAAa,GAAGD,GAAG,GAAG,MAAKjF,KAAL,CAAWU,cAAvC;AACA,aAAO,MAAKyE,YAAL,CAAkBD,aAAlB,EAAiC3E,KAAjC,CAAP;AACD,KAnSiC;;AAqS1B4E,IAAAA,YArS0B,GAqSX,UAACD,aAAD,EAAwB3E,KAAxB,EAA+C;AACpE,aAAO,MAAK7C,SAAL,CAAekG,OAAf;AACLsB,MAAAA,aADK;AAEL,gBAACrB,MAAD;AACE,gBAAKrD,QAAL,CAAc,sBAAGE,cAAH,SAAGA,cAAH,QAAyB;AACrCA,cAAAA,cAAc,EAAEA,cAAc,GAAGmD,MADI,EAAzB,EAAd,CADF,GAFK;;AAMLtD,MAAAA,KANK,CAAP;;AAQD,KA9SiC,CAGhC,IAAM6E,KAAK,GAAGzG,YAAY,EAA1B,CAEA,IAAM0G,YAAY,0BAAGlG,KAAK,CAACkG,YAAT,kCAAyBD,KAAK,CAAC5G,KAAjD,CACA,IAAM8G,WAAW,yBAAGnG,KAAK,CAACmG,WAAT,iCAAwBF,KAAK,CAACpG,IAA/C,CAEA,MAAKgB,KAAL,GAAa,EACXU,cAAc,EAAE,CADL,EAEXT,MAAM,EAAEnC,aAAa,CAAC2C,SAAd,CAAwB4E,YAAxB,EAAsCC,WAAtC,CAFG,EAGXF,KAAK,EAALA,KAHW,EAIXR,eAAe,EAAE,CAJN,EAKXlB,YAAY,EAAE,CALH,EAMX6B,UAAU,EAAE,CAND,EAAb,CARgC,aAgBjC,CAxCH,uCA0CSC,oBA1CT,GA0CE,gCAA8B,CAC5B,IAAI,KAAK9H,SAAL,CAAe8B,UAAf,EAAJ,EAAiC,CAC/B,KAAK9B,SAAL,CAAe+H,MAAf,GACD,CACF,CA9CH,QAgDSC,MAhDT,GAgDE,kBAAgB,mBACd,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACrF,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAAC2B,UAAL,EAAP,CACD,CAJH,CADF,CAQD,CAzDH,CA2DE;AACF;AACA;AACA,KA9DA,QAuMUc,WAvMV,GAuME,4BAA4D,KAAvCF,GAAuC,YAAlCpE,KAAkC,YAC1D,sBAA6B,KAAKY,QAAL,EAA7B,CAAQS,OAAR,mBAAQA,OAAR,CAAiBC,OAAjB,mBAAiBA,OAAjB,CACA,oBACE,oBAAC,KAAD,IACE,GAAG,EAAEtB,KAAK,CAACA,KAAN,GAAc,GAAd,GAAoBA,KAAK,CAACQ,IADjC,EAEE,GAAG,EAAE4D,GAFP,EAGE,KAAK,EAAEpE,KAHT,EAIE,OAAO,EAAEsB,OAJX,EAKE,OAAO,EAAED,OALX,EAME,KAAK,EAAE,KAAKG,KAAL,CAAWoF,KANpB,EAOE,KAAK,EAAE,KAAKjG,KAAL,CAAWwG,KAPpB,EAQE,WAAW,EAAE,KAAKxG,KAAL,CAAWyG,QAR1B,EASE,iBAAiB,EAAE,KAAKtC,qBAT1B,EAUE,SAAS,EAAE,KAAKnE,KAAL,CAAW0G,SAVxB,GADF,CAcD,CAvNH,QAyNU3D,iBAzNV,GAyNE,6BAA4B,CAC1B,mBAAmC,KAAKlC,KAAxC,CAAQU,cAAR,gBAAQA,cAAR,CAAwBT,MAAxB,gBAAwBA,MAAxB,CAEA,IAAMgC,SAAS,GAAG,CAACvB,cAAc,GAAGT,MAAM,CAAC,CAAD,CAAN,CAAU2B,SAAV,CAAoB,KAAKvB,KAAzB,CAAlB,CAAlB,CACA,KAAK,IAAIqC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGzC,MAAM,CAACkB,MAA3B,EAAmCuB,CAAC,EAApC,EAAwC,CACtC,IAAMoD,QAAQ,GAAG7D,SAAS,CAACS,CAAC,GAAG,CAAL,CAAT,GAAmBzC,MAAM,CAACyC,CAAC,GAAG,CAAL,CAAN,CAAcd,SAAd,CAAwB,KAAKvB,KAA7B,CAApC,CACA4B,SAAS,CAAC8D,IAAV,CAAeD,QAAf,EACD,CACD,OAAO7D,SAAP,CACD,CAlOH,mBAA8BjF,KAAK,CAACgJ,SAApC,EAAa9G,Q,CACG+G,mB,GAAsB,U,CADzB/G,Q,CAGGG,Y,GAA6B,EACzCQ,OAAO,EAAE,EACPb,IAAI,EAAExB,QADC,EAEPgB,KAAK,EAAEjB,SAFA,EAGPqB,IAAI,EAAEtB,QAHC,EADgC,EAMzCwC,OAAO,EAAE,EACPd,IAAI,EAAE3B,QADC,EAEPmB,KAAK,EAAEpB,SAFA,EAGPwB,IAAI,EAAEzB,QAHC,EANgC,E","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\n\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { themeConfig } from './config';\nimport * as CalendarUtils from './CalendarUtils';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { styles } from './Calendar.styles';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\n\nexport interface CalendarProps {\n initialMonth?: number;\n initialYear?: number;\n onSelect?: (date: CalendarDateShape) => void;\n value?: Nullable<CalendarDateShape>;\n maxDate?: CalendarDateShape;\n minDate?: CalendarDateShape;\n isHoliday?: (day: CalendarDateShape & { isWeekend: boolean }) => boolean;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n today: CalendarDateShape;\n scrollDirection: number;\n scrollTarget: number;\n touchStart: number;\n}\n\nexport const CalendarDataTids = {\n root: 'Calendar',\n month: 'MonthView__month',\n headerMonth: 'MonthView__headerMonth',\n headerYear: 'MonthView__headerYear',\n} as const;\n\nconst getTodayDate = () => {\n const date = new Date();\n return {\n date: date.getDate(),\n month: date.getMonth(),\n year: date.getFullYear(),\n };\n};\n\ntype DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate'>>;\n\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n\n public static defaultProps: DefaultProps = {\n minDate: {\n year: MIN_YEAR,\n month: MIN_MONTH,\n date: MIN_DATE,\n },\n maxDate: {\n year: MAX_YEAR,\n month: MAX_MONTH,\n date: MAX_DATE,\n },\n };\n\n private getProps = createPropsGetter(Calendar.defaultProps);\n\n private theme!: Theme;\n private wheelEndTimeout: Nullable<number>;\n private root: Nullable<HTMLElement>;\n private animation = animation();\n private touchStartY: Nullable<number> = null;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const today = getTodayDate();\n\n const initialMonth = props.initialMonth ?? today.month;\n const initialYear = props.initialYear ?? today.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n today,\n scrollDirection: 1,\n scrollTarget: 0,\n touchStart: 0,\n };\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Scrolls calendar to given date\n * @public\n */\n public scrollToMonth = async (month: number, year: number) => {\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => setTimeout(r));\n }\n\n const { minDate, maxDate } = this.getProps();\n\n if (minDate && isGreater(minDate, create(32, month, year))) {\n this.scrollToMonth(minDate.month, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, month, year))) {\n this.scrollToMonth(maxDate.month, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - month - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () =>\n this.setState({\n months: CalendarUtils.getMonths(month, year),\n scrollPosition: 0,\n });\n\n const isYearChanges = (state: CalendarState) =>\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2;\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) =>\n MonthViewModel.create(month + index, year),\n );\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) =>\n MonthViewModel.create(month + index - monthsToAppendCount + 2, year),\n );\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private renderMain = () => {\n const positions = this.getMonthPositions();\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n return (\n <div ref={this.refRoot} className={styles.root(this.theme)} data-tid={CalendarDataTids.root}>\n <div style={wrapperStyle} className={styles.wrapper()}>\n {this.state.months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme))\n .map(this.renderMonth, this)}\n </div>\n </div>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n const { minDate, maxDate } = this.getProps();\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n maxDate={maxDate}\n minDate={minDate}\n today={this.state.today}\n value={this.props.value}\n onDateClick={this.props.onSelect}\n onMonthYearChange={this.handleMonthYearChange}\n isHoliday={this.props.isHoliday}\n />\n );\n }\n\n private getMonthPositions() {\n const { scrollPosition, months } = this.state;\n\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) =>\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any),\n );\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = window.setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const trasholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_SIZE;\n\n if (scrollTarget < trasholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = trasholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) =>\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any),\n );\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) =>\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n })),\n onEnd,\n );\n };\n}\n"]}
|
|
@@ -27,21 +27,11 @@ export declare const CalendarDataTids: {
|
|
|
27
27
|
readonly headerMonth: "MonthView__headerMonth";
|
|
28
28
|
readonly headerYear: "MonthView__headerYear";
|
|
29
29
|
};
|
|
30
|
+
declare type DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate'>>;
|
|
30
31
|
export declare class Calendar extends React.Component<CalendarProps, CalendarState> {
|
|
31
32
|
static __KONTUR_REACT_UI__: string;
|
|
32
|
-
static defaultProps:
|
|
33
|
-
|
|
34
|
-
minDate: {
|
|
35
|
-
year: number;
|
|
36
|
-
month: number;
|
|
37
|
-
date: number;
|
|
38
|
-
};
|
|
39
|
-
maxDate: {
|
|
40
|
-
year: number;
|
|
41
|
-
month: number;
|
|
42
|
-
date: number;
|
|
43
|
-
};
|
|
44
|
-
};
|
|
33
|
+
static defaultProps: DefaultProps;
|
|
34
|
+
private getProps;
|
|
45
35
|
private theme;
|
|
46
36
|
private wheelEndTimeout;
|
|
47
37
|
private root;
|
|
@@ -70,3 +60,4 @@ export declare class Calendar extends React.Component<CalendarProps, CalendarSta
|
|
|
70
60
|
private scrollTo;
|
|
71
61
|
private scrollAmount;
|
|
72
62
|
}
|
|
63
|
+
export {};
|
|
@@ -6,7 +6,7 @@ import { css, memoizeStyle } from "../../../lib/theming/Emotion";
|
|
|
6
6
|
import { resetButton } from "../../../lib/styles/Mixins";
|
|
7
7
|
export var styles = memoizeStyle({
|
|
8
8
|
cell: function cell(t) {
|
|
9
|
-
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n ", ";\n\n background: ", ";\n border: 1px solid transparent;\n display: inline-block;\n font-size: 14px;\n padding: 0;\n text-align: center;\n user-select: none;\n position: relative;\n\n width: ", ";\n height: ", ";\n line-height: ", ";\n border-radius: 50%;\n\n &:hover {\n background-color: ", ";\n color: ", ";\n cursor: pointer;\n }\n &:disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n &:active:hover {\n color: ", ";\n }\n "])), resetButton(), t.calendarCellBg, t.calendarCellSize, t.calendarCellSize, t.calendarCellLineHeight, t.calendarCellHoverBgColor, t.calendarCellHoverColor, t.calendarCellActiveHoverColor);
|
|
9
|
+
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n ", ";\n\n background: ", ";\n border: 1px solid transparent;\n display: inline-block;\n font-size: 14px;\n padding: 0;\n text-align: center;\n user-select: none;\n position: relative;\n\n width: ", ";\n height: ", ";\n line-height: ", ";\n border-radius: 50%;\n\n &:hover {\n background-color: ", ";\n color: ", ";\n cursor: pointer;\n }\n &:disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n &:active:hover:enabled {\n color: ", ";\n }\n "])), resetButton(), t.calendarCellBg, t.calendarCellSize, t.calendarCellSize, t.calendarCellLineHeight, t.calendarCellHoverBgColor, t.calendarCellHoverColor, t.calendarCellActiveHoverColor);
|
|
10
10
|
},
|
|
11
11
|
selected: function selected(t) {
|
|
12
12
|
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n background-color: ", ";\n color: ", ";\n "])), t.calendarCellSelectedBgColor, t.calendarCellSelectedFontColor);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DayCellView.styles.ts"],"names":["css","memoizeStyle","resetButton","styles","cell","t","calendarCellBg","calendarCellSize","calendarCellLineHeight","calendarCellHoverBgColor","calendarCellHoverColor","calendarCellActiveHoverColor","selected","calendarCellSelectedBgColor","calendarCellSelectedFontColor","weekend","calendarCellWeekendColor","today","calendarCellTodayBorder"],"mappings":"0KAAA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;;AAEA,SAASC,WAAT,QAA4B,yBAA5B;;AAEA,OAAO,IAAMC,MAAM,GAAGF,YAAY,CAAC;AACjCG,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,WAAOL,GAAP;AACIE,IAAAA,WAAW,EADf;;AAGgBG,IAAAA,CAAC,CAACC,cAHlB;;;;;;;;;AAYWD,IAAAA,CAAC,CAACE,gBAZb;AAaYF,IAAAA,CAAC,CAACE,gBAbd;AAciBF,IAAAA,CAAC,CAACG,sBAdnB;;;;AAkBwBH,IAAAA,CAAC,CAACI,wBAlB1B;AAmBaJ,IAAAA,CAAC,CAACK,sBAnBf;;;;;;;;AA2BaL,IAAAA,CAAC,CAACM,4BA3Bf;;;AA8BD,GAhCgC;;AAkCjCC,EAAAA,QAlCiC,oBAkCxBP,CAlCwB,EAkCd;AACjB,WAAOL,GAAP;AACsBK,IAAAA,CAAC,CAACQ,2BADxB;AAEWR,IAAAA,CAAC,CAACS,6BAFb;;AAID,GAvCgC;;AAyCjCC,EAAAA,OAzCiC,mBAyCzBV,CAzCyB,EAyCf;AAChB,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAACW,wBADb;;AAGD,GA7CgC;;AA+CjCC,EAAAA,KA/CiC,iBA+C3BZ,CA/C2B,EA+CjB;AACd,WAAOL,GAAP;AACYK,IAAAA,CAAC,CAACa,uBADd;;AAGD,GAnDgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const styles = memoizeStyle({\n cell(t: Theme) {\n return css`\n ${resetButton()};\n\n background: ${t.calendarCellBg};\n border: 1px solid transparent;\n display: inline-block;\n font-size: 14px;\n padding: 0;\n text-align: center;\n user-select: none;\n position: relative;\n\n width: ${t.calendarCellSize};\n height: ${t.calendarCellSize};\n line-height: ${t.calendarCellLineHeight};\n border-radius: 50%;\n\n &:hover {\n background-color: ${t.calendarCellHoverBgColor};\n color: ${t.calendarCellHoverColor};\n cursor: pointer;\n }\n &:disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n &:active:hover {\n color: ${t.calendarCellActiveHoverColor};\n }\n `;\n },\n\n selected(t: Theme) {\n return css`\n background-color: ${t.calendarCellSelectedBgColor};\n color: ${t.calendarCellSelectedFontColor};\n `;\n },\n\n weekend(t: Theme) {\n return css`\n color: ${t.calendarCellWeekendColor};\n `;\n },\n\n today(t: Theme) {\n return css`\n border: ${t.calendarCellTodayBorder};\n `;\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["DayCellView.styles.ts"],"names":["css","memoizeStyle","resetButton","styles","cell","t","calendarCellBg","calendarCellSize","calendarCellLineHeight","calendarCellHoverBgColor","calendarCellHoverColor","calendarCellActiveHoverColor","selected","calendarCellSelectedBgColor","calendarCellSelectedFontColor","weekend","calendarCellWeekendColor","today","calendarCellTodayBorder"],"mappings":"0KAAA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;;AAEA,SAASC,WAAT,QAA4B,yBAA5B;;AAEA,OAAO,IAAMC,MAAM,GAAGF,YAAY,CAAC;AACjCG,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,WAAOL,GAAP;AACIE,IAAAA,WAAW,EADf;;AAGgBG,IAAAA,CAAC,CAACC,cAHlB;;;;;;;;;AAYWD,IAAAA,CAAC,CAACE,gBAZb;AAaYF,IAAAA,CAAC,CAACE,gBAbd;AAciBF,IAAAA,CAAC,CAACG,sBAdnB;;;;AAkBwBH,IAAAA,CAAC,CAACI,wBAlB1B;AAmBaJ,IAAAA,CAAC,CAACK,sBAnBf;;;;;;;;AA2BaL,IAAAA,CAAC,CAACM,4BA3Bf;;;AA8BD,GAhCgC;;AAkCjCC,EAAAA,QAlCiC,oBAkCxBP,CAlCwB,EAkCd;AACjB,WAAOL,GAAP;AACsBK,IAAAA,CAAC,CAACQ,2BADxB;AAEWR,IAAAA,CAAC,CAACS,6BAFb;;AAID,GAvCgC;;AAyCjCC,EAAAA,OAzCiC,mBAyCzBV,CAzCyB,EAyCf;AAChB,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAACW,wBADb;;AAGD,GA7CgC;;AA+CjCC,EAAAA,KA/CiC,iBA+C3BZ,CA/C2B,EA+CjB;AACd,WAAOL,GAAP;AACYK,IAAAA,CAAC,CAACa,uBADd;;AAGD,GAnDgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const styles = memoizeStyle({\n cell(t: Theme) {\n return css`\n ${resetButton()};\n\n background: ${t.calendarCellBg};\n border: 1px solid transparent;\n display: inline-block;\n font-size: 14px;\n padding: 0;\n text-align: center;\n user-select: none;\n position: relative;\n\n width: ${t.calendarCellSize};\n height: ${t.calendarCellSize};\n line-height: ${t.calendarCellLineHeight};\n border-radius: 50%;\n\n &:hover {\n background-color: ${t.calendarCellHoverBgColor};\n color: ${t.calendarCellHoverColor};\n cursor: pointer;\n }\n &:disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n &:active:hover:enabled {\n color: ${t.calendarCellActiveHoverColor};\n }\n `;\n },\n\n selected(t: Theme) {\n return css`\n background-color: ${t.calendarCellSelectedBgColor};\n color: ${t.calendarCellSelectedFontColor};\n `;\n },\n\n weekend(t: Theme) {\n return css`\n color: ${t.calendarCellWeekendColor};\n `;\n },\n\n today(t: Theme) {\n return css`\n border: ${t.calendarCellTodayBorder};\n `;\n },\n});\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
4
|
+
import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
4
5
|
import { themeConfig } from "../config";
|
|
5
6
|
import * as CDS from "../CalendarDateShape";
|
|
6
7
|
import { MonthView } from "../MonthView";
|
|
@@ -132,7 +133,15 @@ var MonthDayGrid = /*#__PURE__*/function (_React$Component2) {
|
|
|
132
133
|
_inheritsLoose(MonthDayGrid, _React$Component2);
|
|
133
134
|
|
|
134
135
|
function MonthDayGrid() {
|
|
135
|
-
|
|
136
|
+
var _this3;
|
|
137
|
+
|
|
138
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
139
|
+
args[_key2] = arguments[_key2];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
_this3 = _React$Component2.call.apply(_React$Component2, [this].concat(args)) || this;
|
|
143
|
+
_this3.getProps = createPropsGetter(MonthDayGrid.defaultProps);
|
|
144
|
+
return _this3;
|
|
136
145
|
}
|
|
137
146
|
|
|
138
147
|
var _proto2 = MonthDayGrid.prototype;
|
|
@@ -158,16 +167,16 @@ var MonthDayGrid = /*#__PURE__*/function (_React$Component2) {
|
|
|
158
167
|
};
|
|
159
168
|
|
|
160
169
|
_proto2.render = function render() {
|
|
161
|
-
var
|
|
170
|
+
var _this4 = this;
|
|
162
171
|
|
|
163
172
|
return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
|
|
164
|
-
|
|
165
|
-
return
|
|
173
|
+
_this4.theme = theme;
|
|
174
|
+
return _this4.renderMain();
|
|
166
175
|
});
|
|
167
176
|
};
|
|
168
177
|
|
|
169
178
|
_proto2.renderMain = function renderMain() {
|
|
170
|
-
var
|
|
179
|
+
var _this5 = this;
|
|
171
180
|
|
|
172
181
|
return /*#__PURE__*/React.createElement("div", {
|
|
173
182
|
className: styles.monthDayGrid(this.theme)
|
|
@@ -177,17 +186,17 @@ var MonthDayGrid = /*#__PURE__*/function (_React$Component2) {
|
|
|
177
186
|
display: 'inline-block'
|
|
178
187
|
}
|
|
179
188
|
}), this.props.days.map(function (day) {
|
|
180
|
-
var isWeekend =
|
|
189
|
+
var isWeekend = _this5.getProps().isHoliday(day);
|
|
181
190
|
|
|
182
191
|
return /*#__PURE__*/React.createElement(DayCellView, {
|
|
183
192
|
date: day,
|
|
184
193
|
key: day.date + "." + day.month + "." + day.year,
|
|
185
|
-
minDate:
|
|
186
|
-
maxDate:
|
|
187
|
-
today:
|
|
188
|
-
value:
|
|
194
|
+
minDate: _this5.props.minDate,
|
|
195
|
+
maxDate: _this5.props.maxDate,
|
|
196
|
+
today: _this5.props.today,
|
|
197
|
+
value: _this5.props.value,
|
|
189
198
|
isWeekend: isWeekend,
|
|
190
|
-
onDateClick:
|
|
199
|
+
onDateClick: _this5.props.onDateClick
|
|
191
200
|
});
|
|
192
201
|
}));
|
|
193
202
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Month.tsx"],"names":["React","ThemeContext","themeConfig","CDS","MonthView","DayCellView","CalendarScrollEvents","styles","Month","monthSelect","yearSelect","closeSelects","close","monthRef","yearRef","handleMonthSelect","month","props","onMonthYearChange","year","handleYearSelect","shouldComponentUpdate","nextProps","top","isEqual","value","today","minDate","maxDate","componentDidMount","addListener","render","theme","renderMain","offset","getHeight","isFirstInYear","isLastInYear","renderCells","days","onDateClick","isHoliday","Component","MonthDayGrid","monthDayGrid","width","DAY_SIZE","display","map","day","isWeekend","date","defaultProps"],"mappings":"sEAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;;;;;AAKA,SAASC,WAAT,QAA4B,UAA5B;AACA,OAAO,KAAKC,GAAZ,MAAqB,qBAArB;;;AAGA,SAASC,SAAT,QAA0B,aAA1B;AACA,SAASC,WAAT,QAA4B,eAA5B;AACA,OAAO,KAAKC,oBAAZ,MAAsC,wBAAtC;AACA,SAASC,MAAT,QAAuB,oBAAvB;;;;;;;;;;;;;;AAcA,WAAaC,KAAb;;;AAGUC,IAAAA,WAHV,GAG2C,IAH3C;AAIUC,IAAAA,UAJV,GAI0C,IAJ1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8EUC,IAAAA,YA9EV,GA8EyB,YAAM;AAC3B,UAAI,MAAKF,WAAT,EAAsB;AACpB,cAAKA,WAAL,CAAiBG,KAAjB;AACD;AACD,UAAI,MAAKF,UAAT,EAAqB;AACnB,cAAKA,UAAL,CAAgBE,KAAhB;AACD;AACF,KArFH;;AAuFUC,IAAAA,QAvFV,GAuFqB,UAACJ,WAAD,EAAoC;AACrD,YAAKA,WAAL,GAAmBA,WAAnB;AACD,KAzFH;;AA2FUK,IAAAA,OA3FV,GA2FoB,UAACJ,UAAD,EAAmC;AACnD,YAAKA,UAAL,GAAkBA,UAAlB;AACD,KA7FH;;AA+FUK,IAAAA,iBA/FV,GA+F8B,UAACC,KAAD,EAAmB;AAC7C,YAAKC,KAAL,CAAWC,iBAAX,CAA6BF,KAA7B,EAAoC,MAAKC,KAAL,CAAWD,KAAX,CAAiBG,IAArD;AACD,KAjGH;;AAmGUC,IAAAA,gBAnGV,GAmG6B,UAACD,IAAD,EAAkB;AAC3C,YAAKF,KAAL,CAAWC,iBAAX,CAA6B,MAAKD,KAAL,CAAWD,KAAX,CAAiBA,KAA9C,EAAqDG,IAArD;AACD,KArGH,mDAMSE,qBANT,GAME,+BAA6BC,SAA7B,EAAoD,CAClD,IAAI,KAAKL,KAAL,CAAWM,GAAX,KAAmBD,SAAS,CAACC,GAAjC,EAAsC,CACpC,OAAO,IAAP,CACD,CACD,IAAI,CAACpB,GAAG,CAACqB,OAAJ,CAAYF,SAAS,CAACG,KAAtB,EAA6B,KAAKR,KAAL,CAAWQ,KAAxC,CAAL,EAAqD,CACnD,OAAO,IAAP,CACD,CACD,IAAI,CAACtB,GAAG,CAACqB,OAAJ,CAAYF,SAAS,CAACI,KAAtB,EAA6B,KAAKT,KAAL,CAAWS,KAAxC,CAAL,EAAqD,CACnD,OAAO,IAAP,CACD,CACD,IAAI,CAACvB,GAAG,CAACqB,OAAJ,CAAYF,SAAS,CAACK,OAAtB,EAA+B,KAAKV,KAAL,CAAWU,OAA1C,CAAL,EAAyD,CACvD,OAAO,IAAP,CACD,CACD,IAAI,CAACxB,GAAG,CAACqB,OAAJ,CAAYF,SAAS,CAACM,OAAtB,EAA+B,KAAKX,KAAL,CAAWW,OAA1C,CAAL,EAAyD,CACvD,OAAO,IAAP,CACD,CACD,OAAO,KAAKX,KAAL,CAAWD,KAAX,KAAqBM,SAAS,CAACN,KAAtC,CACD,CAvBH,QAyBSa,iBAzBT,GAyBE,6BAA2B,CACzBvB,oBAAoB,CAACwB,WAArB,CAAiC,KAAKnB,YAAtC,EACD,CA3BH,QA6BSoB,MA7BT,GA6BE,kBAAgB,mBACd,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACC,UAAL,EAAP,CACD,CAJH,CADF,CAQD,CAtCH,QAwCSA,UAxCT,GAwCE,sBAAoB,CAClB,kBAAyC,KAAKhB,KAA9C,CAAQD,KAAR,eAAQA,KAAR,CAAeY,OAAf,eAAeA,OAAf,CAAwBD,OAAxB,eAAwBA,OAAxB,CAAiCJ,GAAjC,eAAiCA,GAAjC,CACA,oBACE,oBAAC,SAAD,IACE,cAAc,EAAEP,KAAK,CAACkB,MADxB,EAEE,MAAM,EAAElB,KAAK,CAACmB,SAAN,CAAgB,KAAKH,KAArB,CAFV,EAGE,aAAa,EAAEhB,KAAK,CAACoB,aAHvB,EAIE,YAAY,EAAEpB,KAAK,CAACqB,YAJtB,EAKE,OAAO,EAAET,OALX,EAME,OAAO,EAAED,OANX,EAOE,KAAK,EAAEX,KAAK,CAACA,KAPf,EAQE,GAAG,EAAEO,GARP,EASE,IAAI,EAAEP,KAAK,CAACG,IATd,EAUE,aAAa,EAAE,KAAKJ,iBAVtB,EAWE,YAAY,EAAE,KAAKK,gBAXrB,EAYE,cAAc,EAAE,KAAKP,QAZvB,EAaE,aAAa,EAAE,KAAKC,OAbtB,IAeG,KAAKwB,WAAL,EAfH,CADF,CAmBD,CA7DH,QA+DUA,WA/DV,GA+DE,uBAAsB,CACpB,oBACE,oBAAC,YAAD,IACE,IAAI,EAAE,KAAKrB,KAAL,CAAWD,KAAX,CAAiBuB,IADzB,EAEE,MAAM,EAAE,KAAKtB,KAAL,CAAWD,KAAX,CAAiBkB,MAF3B,EAGE,OAAO,EAAE,KAAKjB,KAAL,CAAWU,OAHtB,EAIE,OAAO,EAAE,KAAKV,KAAL,CAAWW,OAJtB,EAKE,KAAK,EAAE,KAAKX,KAAL,CAAWS,KALpB,EAME,KAAK,EAAE,KAAKT,KAAL,CAAWQ,KANpB,EAOE,WAAW,EAAE,KAAKR,KAAL,CAAWuB,WAP1B,EAQE,SAAS,EAAE,KAAKvB,KAAL,CAAWwB,SARxB,GADF,CAYD,CA5EH,gBAA2BzC,KAAK,CAAC0C,SAAjC,E;;;;;;;;;;;;;;AAmHMC,Y;;;;;;;AAOGtB,EAAAA,qB,GAAP,+BAA6BC,SAA7B,EAA2D;AACzD,QAAI,CAACnB,GAAG,CAACqB,OAAJ,CAAYF,SAAS,CAACG,KAAtB,EAA6B,KAAKR,KAAL,CAAWQ,KAAxC,CAAL,EAAqD;AACnD,aAAO,IAAP;AACD;AACD,QAAI,CAACtB,GAAG,CAACqB,OAAJ,CAAYF,SAAS,CAACI,KAAtB,EAA6B,KAAKT,KAAL,CAAWS,KAAxC,CAAL,EAAqD;AACnD,aAAO,IAAP;AACD;AACD,QAAI,CAACvB,GAAG,CAACqB,OAAJ,CAAYF,SAAS,CAACK,OAAtB,EAA+B,KAAKV,KAAL,CAAWU,OAA1C,CAAL,EAAyD;AACvD,aAAO,IAAP;AACD;AACD,QAAI,CAACxB,GAAG,CAACqB,OAAJ,CAAYF,SAAS,CAACM,OAAtB,EAA+B,KAAKX,KAAL,CAAWW,OAA1C,CAAL,EAAyD;AACvD,aAAO,IAAP;AACD;AACD,WAAO,KAAKX,KAAL,CAAWsB,IAAX,KAAoBjB,SAAS,CAACiB,IAArC;AACD,G;;AAEMR,EAAAA,M,GAAP,kBAAgB;AACd;AACE,0BAAC,YAAD,CAAc,QAAd;AACG,gBAACC,KAAD,EAAW;AACV,QAAA,MAAI,CAACA,KAAL,GAAaA,KAAb;AACA,eAAO,MAAI,CAACC,UAAL,EAAP;AACD,OAJH,CADF;;;AAQD,G;;AAEMA,EAAAA,U,GAAP,sBAAoB;AAClB;AACE,mCAAK,SAAS,EAAE1B,MAAM,CAACqC,YAAP,CAAoB,KAAKZ,KAAzB,CAAhB;AACE;AACE,QAAA,KAAK,EAAE;AACLa,UAAAA,KAAK,EAAE,KAAK5B,KAAL,CAAWiB,MAAX,GAAoBhC,WAAW,CAAC,KAAK8B,KAAN,CAAX,CAAwBc,QAD9C;AAELC,UAAAA,OAAO,EAAE,cAFJ,EADT,GADF;;;AAOG,WAAK9B,KAAL,CAAWsB,IAAX,CAAgBS,GAAhB,CAAoB,UAACC,GAAD,EAAS;AAC5B,YAAMC,SAAS,GAAG,MAAI,CAACjC,KAAL,CAAWwB,SAAX,CAAqBQ,GAArB,CAAlB;;AAEA;AACE,8BAAC,WAAD;AACE,YAAA,IAAI,EAAEA,GADR;AAEE,YAAA,GAAG,EAAKA,GAAG,CAACE,IAAT,SAAiBF,GAAG,CAACjC,KAArB,SAA8BiC,GAAG,CAAC9B,IAFvC;AAGE,YAAA,OAAO,EAAE,MAAI,CAACF,KAAL,CAAWU,OAHtB;AAIE,YAAA,OAAO,EAAE,MAAI,CAACV,KAAL,CAAWW,OAJtB;AAKE,YAAA,KAAK,EAAE,MAAI,CAACX,KAAL,CAAWS,KALpB;AAME,YAAA,KAAK,EAAE,MAAI,CAACT,KAAL,CAAWQ,KANpB;AAOE,YAAA,SAAS,EAAEyB,SAPb;AAQE,YAAA,WAAW,EAAE,MAAI,CAACjC,KAAL,CAAWuB,WAR1B,GADF;;;AAYD,OAfA,CAPH,CADF;;;AA0BD,G,uBA7DwBxC,KAAK,CAAC0C,S,EAA3BC,Y,CAGUS,Y,GAAe,EAC3BX,SAAS,EAAE,mBAACQ,GAAD,UAAyDA,GAAG,CAACC,SAA7D,EADgB,E","sourcesContent":["import React from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DateSelect } from '../DateSelect';\nimport { Nullable } from '../../typings/utility-types';\n\nimport { themeConfig } from './config';\nimport * as CDS from './CalendarDateShape';\nimport { MonthViewModel } from './MonthViewModel';\nimport { DayCellViewModel } from './DayCellViewModel';\nimport { MonthView } from './MonthView';\nimport { DayCellView } from './DayCellView';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { styles } from './MonthView.styles';\n\ninterface MonthProps {\n top: number;\n month: MonthViewModel;\n maxDate?: CDS.CalendarDateShape;\n minDate?: CDS.CalendarDateShape;\n today?: CDS.CalendarDateShape;\n value?: Nullable<CDS.CalendarDateShape>;\n onDateClick?: (date: CDS.CalendarDateShape) => void;\n onMonthYearChange: (month: number, year: number) => void;\n isHoliday?: (day: CDS.CalendarDateShape & { isWeekend: boolean }) => boolean;\n}\n\nexport class Month extends React.Component<MonthProps> {\n private theme!: Theme;\n\n private monthSelect: DateSelect | null = null;\n private yearSelect: DateSelect | null = null;\n\n public shouldComponentUpdate(nextProps: MonthProps) {\n if (this.props.top !== nextProps.top) {\n return true;\n }\n if (!CDS.isEqual(nextProps.value, this.props.value)) {\n return true;\n }\n if (!CDS.isEqual(nextProps.today, this.props.today)) {\n return true;\n }\n if (!CDS.isEqual(nextProps.minDate, this.props.minDate)) {\n return true;\n }\n if (!CDS.isEqual(nextProps.maxDate, this.props.maxDate)) {\n return true;\n }\n return this.props.month !== nextProps.month;\n }\n\n public componentDidMount() {\n CalendarScrollEvents.addListener(this.closeSelects);\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { month, maxDate, minDate, top } = this.props;\n return (\n <MonthView\n firstDayOffset={month.offset}\n height={month.getHeight(this.theme)}\n isFirstInYear={month.isFirstInYear}\n isLastInYear={month.isLastInYear}\n maxDate={maxDate}\n minDate={minDate}\n month={month.month}\n top={top}\n year={month.year}\n onMonthSelect={this.handleMonthSelect}\n onYearSelect={this.handleYearSelect}\n monthSelectRef={this.monthRef}\n yearSelectRef={this.yearRef}\n >\n {this.renderCells()}\n </MonthView>\n );\n }\n\n private renderCells() {\n return (\n <MonthDayGrid\n days={this.props.month.days}\n offset={this.props.month.offset}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n today={this.props.today}\n value={this.props.value}\n onDateClick={this.props.onDateClick}\n isHoliday={this.props.isHoliday}\n />\n );\n }\n\n private closeSelects = () => {\n if (this.monthSelect) {\n this.monthSelect.close();\n }\n if (this.yearSelect) {\n this.yearSelect.close();\n }\n };\n\n private monthRef = (monthSelect: DateSelect | null) => {\n this.monthSelect = monthSelect;\n };\n\n private yearRef = (yearSelect: DateSelect | null) => {\n this.yearSelect = yearSelect;\n };\n\n private handleMonthSelect = (month: number) => {\n this.props.onMonthYearChange(month, this.props.month.year);\n };\n\n private handleYearSelect = (year: number) => {\n this.props.onMonthYearChange(this.props.month.month, year);\n };\n}\n\ninterface MonthDayGridProps {\n days: DayCellViewModel[];\n offset: number;\n minDate?: CDS.CalendarDateShape;\n maxDate?: CDS.CalendarDateShape;\n today?: CDS.CalendarDateShape;\n value?: Nullable<CDS.CalendarDateShape>;\n onDateClick?: (x0: CDS.CalendarDateShape) => void;\n isHoliday: (day: CDS.CalendarDateShape & { isWeekend: boolean }) => boolean;\n}\n\nclass MonthDayGrid extends React.Component<MonthDayGridProps> {\n private theme!: Theme;\n\n public static defaultProps = {\n isHoliday: (day: CDS.CalendarDateShape & { isWeekend: boolean }) => day.isWeekend,\n };\n\n public shouldComponentUpdate(nextProps: MonthDayGridProps) {\n if (!CDS.isEqual(nextProps.value, this.props.value)) {\n return true;\n }\n if (!CDS.isEqual(nextProps.today, this.props.today)) {\n return true;\n }\n if (!CDS.isEqual(nextProps.minDate, this.props.minDate)) {\n return true;\n }\n if (!CDS.isEqual(nextProps.maxDate, this.props.maxDate)) {\n return true;\n }\n return this.props.days !== nextProps.days;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n return (\n <div className={styles.monthDayGrid(this.theme)}>\n <div\n style={{\n width: this.props.offset * themeConfig(this.theme).DAY_SIZE,\n display: 'inline-block',\n }}\n />\n {this.props.days.map((day) => {\n const isWeekend = this.props.isHoliday(day);\n\n return (\n <DayCellView\n date={day}\n key={`${day.date}.${day.month}.${day.year}`}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n today={this.props.today}\n value={this.props.value}\n isWeekend={isWeekend}\n onDateClick={this.props.onDateClick}\n />\n );\n })}\n </div>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Month.tsx"],"names":["React","ThemeContext","createPropsGetter","themeConfig","CDS","MonthView","DayCellView","CalendarScrollEvents","styles","Month","monthSelect","yearSelect","closeSelects","close","monthRef","yearRef","handleMonthSelect","month","props","onMonthYearChange","year","handleYearSelect","shouldComponentUpdate","nextProps","top","isEqual","value","today","minDate","maxDate","componentDidMount","addListener","render","theme","renderMain","offset","getHeight","isFirstInYear","isLastInYear","renderCells","days","onDateClick","isHoliday","Component","MonthDayGrid","getProps","defaultProps","monthDayGrid","width","DAY_SIZE","display","map","day","isWeekend","date"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DateSelect } from '../DateSelect';\nimport { Nullable } from '../../typings/utility-types';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { themeConfig } from './config';\nimport * as CDS from './CalendarDateShape';\nimport { MonthViewModel } from './MonthViewModel';\nimport { DayCellViewModel } from './DayCellViewModel';\nimport { MonthView } from './MonthView';\nimport { DayCellView } from './DayCellView';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { styles } from './MonthView.styles';\n\ninterface MonthProps {\n top: number;\n month: MonthViewModel;\n maxDate?: CDS.CalendarDateShape;\n minDate?: CDS.CalendarDateShape;\n today?: CDS.CalendarDateShape;\n value?: Nullable<CDS.CalendarDateShape>;\n onDateClick?: (date: CDS.CalendarDateShape) => void;\n onMonthYearChange: (month: number, year: number) => void;\n isHoliday?: (day: CDS.CalendarDateShape & { isWeekend: boolean }) => boolean;\n}\n\ntype DefaultProps = Required<Pick<MonthDayGridProps, 'isHoliday'>>;\n\nexport class Month extends React.Component<MonthProps> {\n private theme!: Theme;\n\n private monthSelect: DateSelect | null = null;\n private yearSelect: DateSelect | null = null;\n\n public shouldComponentUpdate(nextProps: MonthProps) {\n if (this.props.top !== nextProps.top) {\n return true;\n }\n if (!CDS.isEqual(nextProps.value, this.props.value)) {\n return true;\n }\n if (!CDS.isEqual(nextProps.today, this.props.today)) {\n return true;\n }\n if (!CDS.isEqual(nextProps.minDate, this.props.minDate)) {\n return true;\n }\n if (!CDS.isEqual(nextProps.maxDate, this.props.maxDate)) {\n return true;\n }\n return this.props.month !== nextProps.month;\n }\n\n public componentDidMount() {\n CalendarScrollEvents.addListener(this.closeSelects);\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { month, maxDate, minDate, top } = this.props;\n return (\n <MonthView\n firstDayOffset={month.offset}\n height={month.getHeight(this.theme)}\n isFirstInYear={month.isFirstInYear}\n isLastInYear={month.isLastInYear}\n maxDate={maxDate}\n minDate={minDate}\n month={month.month}\n top={top}\n year={month.year}\n onMonthSelect={this.handleMonthSelect}\n onYearSelect={this.handleYearSelect}\n monthSelectRef={this.monthRef}\n yearSelectRef={this.yearRef}\n >\n {this.renderCells()}\n </MonthView>\n );\n }\n\n private renderCells() {\n return (\n <MonthDayGrid\n days={this.props.month.days}\n offset={this.props.month.offset}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n today={this.props.today}\n value={this.props.value}\n onDateClick={this.props.onDateClick}\n isHoliday={this.props.isHoliday}\n />\n );\n }\n\n private closeSelects = () => {\n if (this.monthSelect) {\n this.monthSelect.close();\n }\n if (this.yearSelect) {\n this.yearSelect.close();\n }\n };\n\n private monthRef = (monthSelect: DateSelect | null) => {\n this.monthSelect = monthSelect;\n };\n\n private yearRef = (yearSelect: DateSelect | null) => {\n this.yearSelect = yearSelect;\n };\n\n private handleMonthSelect = (month: number) => {\n this.props.onMonthYearChange(month, this.props.month.year);\n };\n\n private handleYearSelect = (year: number) => {\n this.props.onMonthYearChange(this.props.month.month, year);\n };\n}\n\ninterface MonthDayGridProps {\n days: DayCellViewModel[];\n offset: number;\n minDate?: CDS.CalendarDateShape;\n maxDate?: CDS.CalendarDateShape;\n today?: CDS.CalendarDateShape;\n value?: Nullable<CDS.CalendarDateShape>;\n onDateClick?: (x0: CDS.CalendarDateShape) => void;\n isHoliday?: (day: CDS.CalendarDateShape & { isWeekend: boolean }) => boolean;\n}\n\nclass MonthDayGrid extends React.Component<MonthDayGridProps> {\n private theme!: Theme;\n\n public static defaultProps: DefaultProps = {\n isHoliday: (day: CDS.CalendarDateShape & { isWeekend: boolean }) => day.isWeekend,\n };\n\n private getProps = createPropsGetter(MonthDayGrid.defaultProps);\n\n public shouldComponentUpdate(nextProps: MonthDayGridProps) {\n if (!CDS.isEqual(nextProps.value, this.props.value)) {\n return true;\n }\n if (!CDS.isEqual(nextProps.today, this.props.today)) {\n return true;\n }\n if (!CDS.isEqual(nextProps.minDate, this.props.minDate)) {\n return true;\n }\n if (!CDS.isEqual(nextProps.maxDate, this.props.maxDate)) {\n return true;\n }\n return this.props.days !== nextProps.days;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n return (\n <div className={styles.monthDayGrid(this.theme)}>\n <div\n style={{\n width: this.props.offset * themeConfig(this.theme).DAY_SIZE,\n display: 'inline-block',\n }}\n />\n {this.props.days.map((day) => {\n const isWeekend = this.getProps().isHoliday(day);\n\n return (\n <DayCellView\n date={day}\n key={`${day.date}.${day.month}.${day.year}`}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n today={this.props.today}\n value={this.props.value}\n isWeekend={isWeekend}\n onDateClick={this.props.onDateClick}\n />\n );\n })}\n </div>\n );\n }\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { createPropsGetter } from "../../lib/createPropsGetter";
|
|
3
4
|
import { ComponentTable } from "../ComponentTable";
|
|
4
5
|
export var ComponentCombinator = /*#__PURE__*/function (_React$Component) {
|
|
5
6
|
_inheritsLoose(ComponentCombinator, _React$Component);
|
|
@@ -12,6 +13,7 @@ export var ComponentCombinator = /*#__PURE__*/function (_React$Component) {
|
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
|
|
16
|
+
_this.getProps = createPropsGetter(ComponentCombinator.defaultProps);
|
|
15
17
|
_this.state = {
|
|
16
18
|
page: 0
|
|
17
19
|
};
|
|
@@ -45,9 +47,12 @@ export var ComponentCombinator = /*#__PURE__*/function (_React$Component) {
|
|
|
45
47
|
var page = this.state.page;
|
|
46
48
|
var _this$props = this.props,
|
|
47
49
|
combinations = _this$props.combinations,
|
|
48
|
-
Component = _this$props.Component
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
Component = _this$props.Component;
|
|
51
|
+
|
|
52
|
+
var _this$getProps = this.getProps(),
|
|
53
|
+
presetProps = _this$getProps.presetProps,
|
|
54
|
+
presetState = _this$getProps.presetState;
|
|
55
|
+
|
|
51
56
|
var pages = [];
|
|
52
57
|
var row = 0;
|
|
53
58
|
var sizes = combinations.map(function (c) {
|
|
@@ -90,8 +95,6 @@ export var ComponentCombinator = /*#__PURE__*/function (_React$Component) {
|
|
|
90
95
|
return ComponentCombinator;
|
|
91
96
|
}(React.Component);
|
|
92
97
|
ComponentCombinator.defaultProps = {
|
|
93
|
-
props: [],
|
|
94
|
-
states: [],
|
|
95
98
|
presetProps: {},
|
|
96
99
|
presetState: {}
|
|
97
100
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ComponentCombinator.tsx"],"names":["React","ComponentTable","ComponentCombinator","state","page","prevPage","setState","nextPage","render","props","combinations","Component","presetProps","presetState","pages","row","sizes","map","c","length","flatCombinations","concat","j","push","offsetX","offsetY","pageOffsets","marginBottom","slice"
|
|
1
|
+
{"version":3,"sources":["ComponentCombinator.tsx"],"names":["React","createPropsGetter","ComponentTable","ComponentCombinator","getProps","defaultProps","state","page","prevPage","setState","nextPage","render","props","combinations","Component","presetProps","presetState","pages","row","sizes","map","c","length","flatCombinations","concat","j","push","offsetX","offsetY","pageOffsets","marginBottom","slice"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { DefaultizeProps } from '../lib/utils';\nimport { createPropsGetter } from '../lib/createPropsGetter';\n\nimport { ComponentTable, StatePropsCombinations, StateType } from './ComponentTable';\n\nexport interface ComponentCombinatorProps<C, P, S> {\n combinations: Array<StatePropsCombinations<P, S>>;\n Component: C;\n presetProps?: DefaultizeProps<C, P>;\n presetState?: Partial<S>;\n}\n\ntype DefaultProps<T, C, P> = Required<Pick<ComponentCombinatorProps<T, C, P>, 'presetProps' | 'presetState'>>;\n\nexport class ComponentCombinator<\n T extends React.Component<any, any, any>,\n C extends React.ComponentType<any>,\n P extends React.ComponentProps<C>,\n> extends React.Component<\n ComponentCombinatorProps<C extends React.ComponentClass<P, any> ? React.ClassType<P, T, C> : C, P, StateType<C>>,\n { page: number }\n> {\n public static defaultProps: DefaultProps<unknown, unknown, unknown> = {\n presetProps: {},\n presetState: {},\n };\n\n private getProps = createPropsGetter(ComponentCombinator.defaultProps);\n\n public state = {\n page: 0,\n };\n\n public render() {\n const { page } = this.state;\n const { combinations, Component } = this.props;\n const { presetProps, presetState } = this.getProps();\n const pages = [];\n let row = 0;\n const sizes = combinations.map((c) => c.length);\n const flatCombinations = ([] as typeof combinations[0]).concat(...combinations);\n\n for (let j = 0; j < sizes.length - 1; j++) {\n pages.push({\n offsetX: row,\n offsetY: (row += sizes[j]),\n });\n }\n\n const pageOffsets = pages[page];\n return (\n <div>\n <div id=\"paginator\" style={{ marginBottom: 5 }}>\n <button disabled={page === 0} id=\"prev-page\" onClick={this.prevPage}>\n Prev\n </button>{' '}\n <small>{`${page + 1} / ${pages.length}`}</small>{' '}\n <button disabled={page + 1 >= pages.length} id=\"next-page\" onClick={this.nextPage}>\n Next\n </button>\n </div>\n <div>\n {pageOffsets && (\n <ComponentTable\n key={page}\n Component={Component}\n presetProps={presetProps as DefaultizeProps<C, P>}\n presetState={presetState}\n rows={flatCombinations.slice(pageOffsets.offsetY, flatCombinations.length)}\n cols={flatCombinations.slice(pageOffsets.offsetX, pageOffsets.offsetY)}\n />\n )}\n </div>\n </div>\n );\n }\n\n private prevPage = () => {\n this.setState(({ page }) => ({\n page: page - 1,\n }));\n };\n\n private nextPage = () => {\n this.setState(({ page }) => ({\n page: page + 1,\n }));\n };\n}\n"]}
|
|
@@ -4,18 +4,15 @@ import { StatePropsCombinations, StateType } from './ComponentTable';
|
|
|
4
4
|
export interface ComponentCombinatorProps<C, P, S> {
|
|
5
5
|
combinations: Array<StatePropsCombinations<P, S>>;
|
|
6
6
|
Component: C;
|
|
7
|
-
presetProps
|
|
8
|
-
presetState
|
|
7
|
+
presetProps?: DefaultizeProps<C, P>;
|
|
8
|
+
presetState?: Partial<S>;
|
|
9
9
|
}
|
|
10
|
+
declare type DefaultProps<T, C, P> = Required<Pick<ComponentCombinatorProps<T, C, P>, 'presetProps' | 'presetState'>>;
|
|
10
11
|
export declare class ComponentCombinator<T extends React.Component<any, any, any>, C extends React.ComponentType<any>, P extends React.ComponentProps<C>> extends React.Component<ComponentCombinatorProps<C extends React.ComponentClass<P, any> ? React.ClassType<P, T, C> : C, P, StateType<C>>, {
|
|
11
12
|
page: number;
|
|
12
13
|
}> {
|
|
13
|
-
static defaultProps:
|
|
14
|
-
|
|
15
|
-
states: never[];
|
|
16
|
-
presetProps: {};
|
|
17
|
-
presetState: {};
|
|
18
|
-
};
|
|
14
|
+
static defaultProps: DefaultProps<unknown, unknown, unknown>;
|
|
15
|
+
private getProps;
|
|
19
16
|
state: {
|
|
20
17
|
page: number;
|
|
21
18
|
};
|
|
@@ -23,3 +20,4 @@ export declare class ComponentCombinator<T extends React.Component<any, any, any
|
|
|
23
20
|
private prevPage;
|
|
24
21
|
private nextPage;
|
|
25
22
|
}
|
|
23
|
+
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import { isFunctionalComponent } from "../../lib/utils";
|
|
4
|
+
import { isFunctionalComponent } from "../../lib/utils";
|
|
5
|
+
import { createPropsGetter } from "../../lib/createPropsGetter"; // TODO We should output state too
|
|
5
6
|
|
|
6
7
|
var renderPropsDesc = function renderPropsDesc(props) {
|
|
7
8
|
return Object.keys(props).map(function (key) {
|
|
@@ -36,7 +37,15 @@ export var ComponentTable = /*#__PURE__*/function (_React$Component) {
|
|
|
36
37
|
_inheritsLoose(ComponentTable, _React$Component);
|
|
37
38
|
|
|
38
39
|
function ComponentTable() {
|
|
39
|
-
|
|
40
|
+
var _this;
|
|
41
|
+
|
|
42
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
43
|
+
args[_key] = arguments[_key];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
|
|
47
|
+
_this.getProps = createPropsGetter(ComponentTable.defaultProps);
|
|
48
|
+
return _this;
|
|
40
49
|
}
|
|
41
50
|
|
|
42
51
|
var _proto = ComponentTable.prototype;
|
|
@@ -47,9 +56,12 @@ export var ComponentTable = /*#__PURE__*/function (_React$Component) {
|
|
|
47
56
|
rows = _this$props$rows === void 0 ? [] : _this$props$rows,
|
|
48
57
|
_this$props$cols = _this$props.cols,
|
|
49
58
|
cols = _this$props$cols === void 0 ? [] : _this$props$cols,
|
|
50
|
-
presetProps = _this$props.presetProps,
|
|
51
|
-
presetState = _this$props.presetState,
|
|
52
59
|
Component = _this$props.Component;
|
|
60
|
+
|
|
61
|
+
var _this$getProps = this.getProps(),
|
|
62
|
+
presetProps = _this$getProps.presetProps,
|
|
63
|
+
presetState = _this$getProps.presetState;
|
|
64
|
+
|
|
53
65
|
return /*#__PURE__*/React.createElement("table", {
|
|
54
66
|
style: {
|
|
55
67
|
borderSpacing: 10,
|