123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = void 0;
- var _style = require("../../style");
- var _compactItem = require("../../style/compact-item");
- var _internal = require("../../theme/internal");
- var _dropdown = _interopRequireDefault(require("./dropdown"));
- var _multiple = _interopRequireDefault(require("./multiple"));
- var _single = _interopRequireDefault(require("./single"));
- var _token = require("./token");
- var _variants = _interopRequireDefault(require("./variants"));
- // ============================= Selector =============================
- const genSelectorStyle = token => {
- const {
- componentCls
- } = token;
- return {
- position: 'relative',
- transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,
- input: {
- cursor: 'pointer'
- },
- [`${componentCls}-show-search&`]: {
- cursor: 'text',
- input: {
- cursor: 'auto',
- color: 'inherit',
- height: '100%'
- }
- },
- [`${componentCls}-disabled&`]: {
- cursor: 'not-allowed',
- input: {
- cursor: 'not-allowed'
- }
- }
- };
- };
- // ============================== Styles ==============================
- // /* Reset search input style */
- const getSearchInputWithoutBorderStyle = token => {
- const {
- componentCls
- } = token;
- return {
- [`${componentCls}-selection-search-input`]: {
- margin: 0,
- padding: 0,
- background: 'transparent',
- border: 'none',
- outline: 'none',
- appearance: 'none',
- fontFamily: 'inherit',
- '&::-webkit-search-cancel-button': {
- display: 'none',
- appearance: 'none'
- }
- }
- };
- };
- // =============================== Base ===============================
- const genBaseStyle = token => {
- const {
- antCls,
- componentCls,
- inputPaddingHorizontalBase,
- iconCls
- } = token;
- const hoverShowClearStyle = {
- [`${componentCls}-clear`]: {
- opacity: 1,
- background: token.colorBgBase,
- borderRadius: '50%'
- }
- };
- return {
- [componentCls]: Object.assign(Object.assign({}, (0, _style.resetComponent)(token)), {
- position: 'relative',
- display: 'inline-flex',
- cursor: 'pointer',
- [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: Object.assign(Object.assign({}, genSelectorStyle(token)), getSearchInputWithoutBorderStyle(token)),
- // ======================== Selection ========================
- [`${componentCls}-selection-item`]: Object.assign(Object.assign({
- flex: 1,
- fontWeight: 'normal',
- position: 'relative',
- userSelect: 'none'
- }, _style.textEllipsis), {
- // https://github.com/ant-design/ant-design/issues/40421
- [`> ${antCls}-typography`]: {
- display: 'inline'
- }
- }),
- // ======================= Placeholder =======================
- [`${componentCls}-selection-placeholder`]: Object.assign(Object.assign({}, _style.textEllipsis), {
- flex: 1,
- color: token.colorTextPlaceholder,
- pointerEvents: 'none'
- }),
- // ========================== Arrow ==========================
- [`${componentCls}-arrow`]: Object.assign(Object.assign({}, (0, _style.resetIcon)()), {
- position: 'absolute',
- top: '50%',
- insetInlineStart: 'auto',
- insetInlineEnd: inputPaddingHorizontalBase,
- height: token.fontSizeIcon,
- marginTop: token.calc(token.fontSizeIcon).mul(-1).div(2).equal(),
- color: token.colorTextQuaternary,
- fontSize: token.fontSizeIcon,
- lineHeight: 1,
- textAlign: 'center',
- pointerEvents: 'none',
- display: 'flex',
- alignItems: 'center',
- transition: `opacity ${token.motionDurationSlow} ease`,
- [iconCls]: {
- verticalAlign: 'top',
- transition: `transform ${token.motionDurationSlow}`,
- '> svg': {
- verticalAlign: 'top'
- },
- [`&:not(${componentCls}-suffix)`]: {
- pointerEvents: 'auto'
- }
- },
- [`${componentCls}-disabled &`]: {
- cursor: 'not-allowed'
- },
- '> *:not(:last-child)': {
- marginInlineEnd: 8 // FIXME: magic
- }
- }),
- // ========================== Wrap ===========================
- [`${componentCls}-selection-wrap`]: {
- display: 'flex',
- width: '100%',
- position: 'relative',
- minWidth: 0,
- // https://github.com/ant-design/ant-design/issues/51669
- '&:after': {
- content: '"\\a0"',
- width: 0,
- overflow: 'hidden'
- }
- },
- // ========================= Prefix ==========================
- [`${componentCls}-prefix`]: {
- flex: 'none',
- marginInlineEnd: token.selectAffixPadding
- },
- // ========================== Clear ==========================
- [`${componentCls}-clear`]: {
- position: 'absolute',
- top: '50%',
- insetInlineStart: 'auto',
- insetInlineEnd: inputPaddingHorizontalBase,
- zIndex: 1,
- display: 'inline-block',
- width: token.fontSizeIcon,
- height: token.fontSizeIcon,
- marginTop: token.calc(token.fontSizeIcon).mul(-1).div(2).equal(),
- color: token.colorTextQuaternary,
- fontSize: token.fontSizeIcon,
- fontStyle: 'normal',
- lineHeight: 1,
- textAlign: 'center',
- textTransform: 'none',
- cursor: 'pointer',
- opacity: 0,
- transition: `color ${token.motionDurationMid} ease, opacity ${token.motionDurationSlow} ease`,
- textRendering: 'auto',
- // https://github.com/ant-design/ant-design/issues/54205
- // Force GPU compositing on Safari to prevent flickering on opacity/transform transitions
- transform: 'translateZ(0)',
- '&:before': {
- display: 'block'
- },
- '&:hover': {
- color: token.colorIcon
- }
- },
- '@media(hover:none)': hoverShowClearStyle,
- '&:hover': hoverShowClearStyle
- }),
- // ========================= Feedback ==========================
- [`${componentCls}-status`]: {
- '&-error, &-warning, &-success, &-validating': {
- [`&${componentCls}-has-feedback`]: {
- [`${componentCls}-clear`]: {
- insetInlineEnd: token.calc(inputPaddingHorizontalBase).add(token.fontSize).add(token.paddingXS).equal()
- }
- }
- }
- }
- };
- };
- // ============================== Styles ==============================
- const genSelectStyle = token => {
- const {
- componentCls
- } = token;
- return [{
- [componentCls]: {
- // ==================== In Form ====================
- [`&${componentCls}-in-form-item`]: {
- width: '100%'
- }
- }
- },
- // =====================================================
- // == LTR ==
- // =====================================================
- // Base
- genBaseStyle(token),
- // Single
- (0, _single.default)(token),
- // Multiple
- (0, _multiple.default)(token),
- // Dropdown
- (0, _dropdown.default)(token),
- // =====================================================
- // == RTL ==
- // =====================================================
- {
- [`${componentCls}-rtl`]: {
- direction: 'rtl'
- }
- },
- // =====================================================
- // == Space Compact ==
- // =====================================================
- (0, _compactItem.genCompactItemStyle)(token, {
- borderElCls: `${componentCls}-selector`,
- focusElCls: `${componentCls}-focused`
- })];
- };
- // ============================== Export ==============================
- var _default = exports.default = (0, _internal.genStyleHooks)('Select', (token, {
- rootPrefixCls
- }) => {
- const selectToken = (0, _internal.mergeToken)(token, {
- rootPrefixCls,
- inputPaddingHorizontalBase: token.calc(token.paddingSM).sub(1).equal(),
- multipleSelectItemHeight: token.multipleItemHeight,
- selectHeight: token.controlHeight
- });
- return [genSelectStyle(selectToken), (0, _variants.default)(selectToken)];
- }, _token.prepareComponentToken, {
- unitless: {
- optionLineHeight: true,
- optionSelectedFontWeight: true
- }
- });
|